@@ -16,11 +16,11 @@ import Algebra.Lattice.Construct.NaturalChoice.MinMaxOp as LatticeMinMaxOp
16
16
import Algebra.Properties.AbelianGroup
17
17
open import Data.Bool.Base using (T; true; false)
18
18
open import Data.Integer.Base renaming (suc to sucℤ)
19
+ open import Data.Integer.Properties.NatLemmas
19
20
open import Data.Nat.Base as ℕ
20
21
using (ℕ; suc; zero; _∸_; s≤s; z≤n; s<s; z<s; s≤s⁻¹; s<s⁻¹)
21
22
hiding (module ℕ )
22
23
import Data.Nat.Properties as ℕ
23
- open import Data.Nat.Solver
24
24
open import Data.Product.Base using (proj₁; proj₂; _,_; _×_)
25
25
open import Data.Sum.Base as Sum using (_⊎_; inj₁; inj₂; [_,_]′)
26
26
open import Data.Sign.Base as Sign using (Sign)
@@ -45,7 +45,6 @@ open import Algebra.Consequences.Propositional
45
45
open import Algebra.Structures {A = ℤ} _≡_
46
46
module ℤtoℕ = Morphism.Definitions ℤ ℕ _≡_
47
47
module ℕtoℤ = Morphism.Definitions ℕ ℤ _≡_
48
- open +-*-Solver
49
48
50
49
private
51
50
variable
@@ -1337,15 +1336,6 @@ pred-mono (+≤+ m≤n) = ⊖-monoˡ-≤ 1 m≤n
1337
1336
*-zero : Zero 0ℤ _*_
1338
1337
*-zero = *-zeroˡ , *-zeroʳ
1339
1338
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
-
1349
1339
*-assoc : Associative _*_
1350
1340
*-assoc +0 _ _ = refl
1351
1341
*-assoc i +0 _ rewrite ℕ.*-zeroʳ ∣ i ∣ = refl
@@ -1354,14 +1344,14 @@ private
1354
1344
| ℕ.*-zeroʳ ∣ i ∣
1355
1345
| ℕ.*-zeroʳ ∣ sign i Sign.* sign j ◃ ∣ i ∣ ℕ.* ∣ j ∣ ∣
1356
1346
= 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)
1365
1355
1366
1356
private
1367
1357
@@ -1400,26 +1390,10 @@ private
1400
1390
rewrite +-identityʳ y
1401
1391
| +-identityʳ (sign y Sign.* sign x ◃ ∣ y ∣ ℕ.* ∣ x ∣)
1402
1392
= 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
1423
1397
*-distribʳ-+ -[1+ m ] -[1+ n ] +[1+ o ] = begin
1424
1398
(suc o ⊖ suc n) * -[1+ m ] ≡⟨ cong (_* -[1+ m ]) ([1+m]⊖[1+n]≡m⊖n o n) ⟩
1425
1399
(o ⊖ n) * -[1+ m ] ≡⟨ distrib-lemma m n o ⟩
0 commit comments