Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
61a5686
add : lemmas about balance factors at height 0
jamesmckinna Mar 20, 2026
669d9bc
add: `variable`s; tighten `import`s
jamesmckinna Mar 20, 2026
8a4efef
fix: qualified module name `Function`
jamesmckinna Mar 20, 2026
bab7822
refactor: introduce typedefs, remove parentheses, streamline function…
jamesmckinna Mar 20, 2026
47008bd
refactor: use of `variable`s; tighten `import`s
jamesmckinna Mar 20, 2026
6535cd0
tidy up: use of `variable`s; tighten `import`s
jamesmckinna Mar 20, 2026
21e69dd
fix: `CHANGELOG`
jamesmckinna Mar 20, 2026
10d8877
fix: whitespace
jamesmckinna Mar 20, 2026
a1615e7
fix: remove `n` as a name for height `h`
jamesmckinna Mar 25, 2026
f40e572
add: `private` lemma `tree0`
jamesmckinna Mar 25, 2026
75fd742
refactor: rename and deprecate
jamesmckinna Mar 25, 2026
3795466
revert: renaming/deprecation
jamesmckinna Mar 25, 2026
23f3498
fix: more things
jamesmckinna Mar 25, 2026
1a1b8ab
fix: more things
jamesmckinna Mar 25, 2026
a34eb52
fix: more things
jamesmckinna Mar 25, 2026
bfb3e9a
fix: final things?
jamesmckinna Mar 25, 2026
46b87fa
Merge branch 'master' into refactor-AVL
jamesmckinna Apr 2, 2026
b4a68f1
tidy up: `Properties.Delete`
jamesmckinna Apr 2, 2026
e508b20
tidy up: `Properties.Insert`
jamesmckinna Apr 2, 2026
b970cd5
tidy up: `Properties.HeadTail`
jamesmckinna Apr 2, 2026
d864061
tidy up: `Properties.Lookup`
jamesmckinna Apr 2, 2026
be31fc6
tidy up: `Properties.LookupFun`
jamesmckinna Apr 2, 2026
7024c9f
tidy up: `Properties.Singleton`
jamesmckinna Apr 2, 2026
5499508
refactor: `Properties.Join` and consolidate as one module
jamesmckinna Apr 3, 2026
4403f64
add: freshness predicate `_#_`
jamesmckinna Apr 3, 2026
b2fed91
refactor: consolidate `Lookup`
jamesmckinna Apr 3, 2026
ed6c176
refactor: use freshness predicate
jamesmckinna Apr 3, 2026
2cadab5
refactor: standardise bound name for a segment `l < k < u`
jamesmckinna Apr 3, 2026
1e5ae6d
refactor: split up `Join` and `JoinLemmas`
jamesmckinna Apr 3, 2026
ea90fc2
refactor: to use `JoinLemmas`
jamesmckinna Apr 3, 2026
22a7dd6
refactor: standardise bound name for a segment `l < k < u`
jamesmckinna Apr 3, 2026
eeaa888
refactor: standardise notation
jamesmckinna Apr 3, 2026
2dee0d1
refactor: use `variable`s
jamesmckinna Apr 3, 2026
8a5f62a
refactor: use freshness predicate
jamesmckinna Apr 3, 2026
28730ef
refactor: cosmetic tweaks
jamesmckinna Apr 3, 2026
966166e
fix: `import`s in `Properties`
jamesmckinna Apr 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 40 additions & 12 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ Minor improvements
levels to be used.

* Due to becoming large, `Data.Tree.AVL.Indexed.Relation.Unary.Any.Properties`
has been split into small modules
has been split into smaller modules
`Data.Tree.AVL.Indexed.Relation.Unary.Any.Properties.*`
that are reexported by the original `Properties`.

Expand Down Expand Up @@ -109,6 +109,14 @@ Deprecated names
nonPos*nonPos⇒nonPos ↦ nonPos*nonPos⇒nonNeg
```

* In `Data.Tree.AVL.Indexed.Relation.Unary.Any.Properties.Insert`:
```agda
Any-insertWith-nothing ↦ insertWith-nothing
Any-insertWith-just ↦ insertWith-just
Any-insert-nothing ↦ insert-nothing
Any-insert-just ↦ insert-just
```

* In `Data.Vec.Properties`:
```agda
truncate-irrelevant ↦ Relation.Binary.PropositionalEquality.Core.refl
Expand Down Expand Up @@ -183,9 +191,8 @@ New modules
Data.Tree.AVL.Indexed.Relation.Unary.Any.Properties.Delete
Data.Tree.AVL.Indexed.Relation.Unary.Any.Properties.HeadTail
Data.Tree.AVL.Indexed.Relation.Unary.Any.Properties.Insert
Data.Tree.AVL.Indexed.Relation.Unary.Any.Properties.JoinConstFuns
Data.Tree.AVL.Indexed.Relation.Unary.Any.Properties.Join
Data.Tree.AVL.Indexed.Relation.Unary.Any.Properties.LookupFun
Data.Tree.AVL.Indexed.Relation.Unary.Any.Properties.JoinLemmas
Data.Tree.AVL.Indexed.Relation.Unary.Any.Properties.Singleton
```

Expand Down Expand Up @@ -415,6 +422,27 @@ Additions to existing modules
showAtPrecision : ℕ → ℚᵘ → String
```

* In `Data.Tree.AVL.Height`:
```agda
0∼⊔ : 0 ∼ j ⊔ m → j ≡ m
∼0⊔ : i ∼ 0 ⊔ m → i ≡ m
```

* In `Data.Tree.AVL.Indexed`:
```agda
Tree⁺ Tree⁻ : (V : Value v) (l u : Key⁺) (h : ℕ) → Set _
pattern leaf⁻ l<u = _ , leaf l<u
pattern node⁰ʳ k₁ t₁ k₂ t₂ t₃ = node k₁ t₁ (node k₂ t₂ t₃ ∼0) ∼0
pattern node⁰ˡ k₁ k₂ t₁ t₂ t₃ = node k₁ (node k₂ t₁ t₂ ∼0) t₃ ∼0
```

* In `Data.Tree.AVL.Indexed.Relation.Unary.Any`:
```agda
infix 5 _#[_]_ _#_
_#[_]_ : (k : Key) (P : Pred (K& V) p) → Pred (Any P t) ℓ₁
_#_ : Key → Pred (Any P t) ℓ₁
```

* In `Data.Tree.AVL.Indexed.Relation.Unary.Any.Properties.Cast`:
```agda
castʳ⁺ : Any P lm → Any P (castʳ lm m<u)
Expand Down Expand Up @@ -450,47 +478,47 @@ Additions to existing modules
Any P t⁻ → Any P t
```

* In `Data.Tree.AVL.Indexed.Relation.Unary.Any.Properties.JoinConstFuns`:
* In `Data.Tree.AVL.Indexed.Relation.Unary.Any.Properties.JoinLemmas`:
```
joinˡ⁻-here⁺ : (kv : K& V) →
(l : ∃ λ i → Tree V l [ kv .key ] pred[ i ⊕ hˡ ]) →
(l : Tree V l [ kv .key ] ) →
(r : Tree V [ kv .key ] u hʳ) →
(bal : hˡ ∼ hʳ ⊔ h) →
P kv → Any P (proj₂ (joinˡ⁻ hˡ kv l r bal))
joinˡ⁻-left⁺ : (kv : K& V) →
(l : ∃ λ i → Tree V l [ kv .key ] pred[ i ⊕ hˡ ]) →
(l : Tree V l [ kv .key ] ) →
(r : Tree V [ kv .key ] u hʳ) →
(bal : hˡ ∼ hʳ ⊔ h) →
Any P (proj₂ l) → Any P (proj₂ (joinˡ⁻ hˡ kv l r bal))
joinˡ⁻-right⁺ : (kv : K& V) →
(l : ∃ λ i → Tree V l [ kv .key ] pred[ i ⊕ hˡ ]) →
(l : Tree V l [ kv .key ] ) →
(r : Tree V [ kv .key ] u hʳ) →
(bal : hˡ ∼ hʳ ⊔ h) →
Any P r → Any P (proj₂ (joinˡ⁻ hˡ kv l r bal))
joinˡ⁻⁻ : (kv : K& V) →
(l : ∃ λ i → Tree V l [ kv .key ] pred[ i ⊕ hˡ ]) →
(l : Tree V l [ kv .key ] ) →
(r : Tree V [ kv .key ] u hʳ) →
(bal : hˡ ∼ hʳ ⊔ h) →
Any P (proj₂ (joinˡ⁻ hˡ kv l r bal)) →
P kv ⊎ Any P (proj₂ l) ⊎ Any P r
joinʳ⁻-here⁺ : (kv : K& V) →
(l : Tree V l [ kv .key ] hˡ) →
(r : ∃ λ i → Tree V [ kv .key ] u pred[ i ⊕ hʳ ]) →
(r : Tree V [ kv .key ] u ) →
(bal : hˡ ∼ hʳ ⊔ h) →
P kv → Any P (proj₂ (joinʳ⁻ hʳ kv l r bal))
joinʳ⁻-left⁺ : (kv : K& V) →
(l : Tree V l [ kv .key ] hˡ) →
(r : ∃ λ i → Tree V [ kv .key ] u pred[ i ⊕ hʳ ]) →
(r : Tree V [ kv .key ] u ) →
(bal : hˡ ∼ hʳ ⊔ h) →
Any P l → Any P (proj₂ (joinʳ⁻ hʳ kv l r bal))
joinʳ⁻-right⁺ : (kv : K& V) →
(l : Tree V l [ kv .key ] hˡ) →
(r : ∃ λ i → Tree V [ kv .key ] u pred[ i ⊕ hʳ ]) →
(r : Tree V [ kv .key ] u ) →
(bal : hˡ ∼ hʳ ⊔ h) →
Any P (proj₂ r) → Any P (proj₂ (joinʳ⁻ hʳ kv l r bal))
joinʳ⁻⁻ : (kv : K& V) →
(l : Tree V l [ kv .key ] hˡ) →
(r : ∃ λ i → Tree V [ kv .key ] u pred[ i ⊕ hʳ ]) →
(r : Tree V [ kv .key ] u ) →
(bal : hˡ ∼ hʳ ⊔ h) →
Any P (proj₂ (joinʳ⁻ hʳ kv l r bal)) →
P kv ⊎ Any P l ⊎ Any P (proj₂ r)
Expand Down
24 changes: 19 additions & 5 deletions src/Data/Tree/AVL/Height.agda
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@ module Data.Tree.AVL.Height where

open import Data.Nat.Base
open import Data.Fin.Base using (Fin; zero; suc)
open import Relation.Binary.PropositionalEquality.Core using (_≡_; refl)

private
variable
i j m n : ℕ


ℕ₂ = Fin 2
pattern 0# = zero
Expand Down Expand Up @@ -39,18 +45,26 @@ infix 4 _∼_⊔_
-- absolute value of the balance factor is never more than 1.

data _∼_⊔_ : ℕ → ℕ → ℕ → Set where
∼+ : ∀ {n} → n ∼ 1 + n ⊔ 1 + n
∼0 : ∀ {n} → n ∼ n ⊔ n
∼- : ∀ {n} → 1 + n ∼ n ⊔ 1 + n
∼+ : n ∼ 1 + n ⊔ 1 + n
∼0 : n ∼ n ⊔ n
∼- : 1 + n ∼ n ⊔ 1 + n

-- Some lemmas.

max∼ : ∀ {i j m} → i ∼ j ⊔ m → m ∼ i ⊔ m
max∼ : i ∼ j ⊔ m → m ∼ i ⊔ m
max∼ ∼+ = ∼-
max∼ ∼0 = ∼0
max∼ ∼- = ∼0

∼max : ∀ {i j m} → i ∼ j ⊔ m → j ∼ m ⊔ m
∼max : i ∼ j ⊔ m → j ∼ m ⊔ m
∼max ∼+ = ∼0
∼max ∼0 = ∼0
∼max ∼- = ∼+

0∼⊔ : 0 ∼ j ⊔ m → j ≡ m
0∼⊔ ∼+ = refl
0∼⊔ ∼0 = refl

∼0⊔ : i ∼ 0 ⊔ m → i ≡ m
∼0⊔ ∼- = refl
∼0⊔ ∼0 = refl
Loading
Loading