Reference · Finite types, distributions and Markov chains
rainbow.math.finite.rational-argmax
Executable finite argmax with exact rational dominance certificates.
decision/nnrat-select
decision/nnrat-select.{u} :
(A : Type u) (score : A → ℚ≥0) (x₁ x₂ : A)
→ Aℚ≥0 = nnrat/NonnegativeRational
list/nnrat-argmax-from
list/nnrat-argmax-from.{u} :
(A : Type u) (score : A → ℚ≥0) (x₁ : A) (x₂ : List A)
→ AList = data/Listℚ≥0 = nnrat/NonnegativeRational
decision/finite-nnrat-argmax
decision/finite-nnrat-argmax.{u} :
(A : Type u) (actions : Finset A) (initial : A) (score : A → ℚ≥0)
→ AFinset = finset-data/Finsetℚ≥0 = nnrat/NonnegativeRational
bool/false-not-true
bool/false-not-true : (h₁ : data/false = data/true) → proposition/falsity
= = equality/Eq
bool/true-not-false
bool/true-not-false : (h₁ : data/true = data/false) → proposition/falsity
= = equality/Eq
nat/decide-at-most-true-sound
nat/decide-at-most-true-sound : (left right : ℕ) (same : nat/decide-at-most left right = data/true) → left ≤ right
= = equality/Eqℕ = data/Nat≤ = nat/at-most
nat/decide-at-most-false-reverse
nat/decide-at-most-false-reverse : (left right : ℕ) (same : nat/decide-at-most left right = data/false) → right ≤ left
= = equality/Eqℕ = data/Nat≤ = nat/at-most
nnrat/at-most-rewrite-left
nnrat/at-most-rewrite-left : (left equivalent-left right : ℚ≥0) (same : left = equivalent-left) (ordered : equivalent-left ≤ right) → left ≤ right
= = equality/Eqℚ≥0 = nnrat/NonnegativeRational≤ = nnrat/at-most
nnrat/decide-at-most-true-sound
nnrat/decide-at-most-true-sound : (left right : ℚ≥0) (same : audit/decide-nnrat-at-most left right = data/true) → left ≤ right
= = equality/Eqℚ≥0 = nnrat/NonnegativeRational≤ = nnrat/at-most
nnrat/decide-at-most-false-reverse
nnrat/decide-at-most-false-reverse : (left right : ℚ≥0) (same : audit/decide-nnrat-at-most left right = data/false) → right ≤ left
= = equality/Eqℚ≥0 = nnrat/NonnegativeRational≤ = nnrat/at-most
decision/nnrat-select-is-left-or-right
decision/nnrat-select-is-left-or-right.{u} :
(A : Type u) (score : A → ℚ≥0) (left right : A)
→ proposition/disjunction (select = left) (select = right)
where select := decision/nnrat-select A score left right= = equality/Eqℚ≥0 = nnrat/NonnegativeRational
decision/nnrat-select-left-bound
decision/nnrat-select-left-bound.{u} :
(A : Type u) (score : A → ℚ≥0) (left right : A)
→ score left ≤ score (decision/nnrat-select A score left right)ℚ≥0 = nnrat/NonnegativeRational≤ = nnrat/at-most
decision/nnrat-select-right-bound
decision/nnrat-select-right-bound.{u} :
(A : Type u) (score : A → ℚ≥0) (left right : A)
→ score right ≤ score (decision/nnrat-select A score left right)ℚ≥0 = nnrat/NonnegativeRational≤ = nnrat/at-most
list/nnrat-argmax-from-bounds-initial
list/nnrat-argmax-from-bounds-initial.{u} :
(A : Type u) (score : A → ℚ≥0) (initial : A) (source : List A)
→ (fun source₁ => score initial ≤ score (list/nnrat-argmax-from A score initial source₁)) sourceList = data/Listℚ≥0 = nnrat/NonnegativeRational≤ = nnrat/at-most
list/nnrat-argmax-from-bounds-member
list/nnrat-argmax-from-bounds-member.{u} :
(A : Type u) (score : A → ℚ≥0) (initial : A) (source : List A) (value : A)
(member : list/membership A source value)
→ score value ≤ score (list/nnrat-argmax-from A score initial source)List = data/Listℚ≥0 = nnrat/NonnegativeRational≤ = nnrat/at-most
list/nnrat-argmax-from-is-initial-or-member
list/nnrat-argmax-from-is-initial-or-member.{u} :
(A : Type u) (score : A → ℚ≥0) (initial : A) (source : List A)
→ proposition/disjunction (list/nnrat-argmax-from A score initial source = initial) (membership)
where membership := list/membership A source (list/nnrat-argmax-from A score initial source)= = equality/EqList = data/Listℚ≥0 = nnrat/NonnegativeRational
decision/finite-nnrat-argmax-is-member
decision/finite-nnrat-argmax-is-member.{u} :
(A : Type u) (actions : Finset A) (initial : A) (score : A → ℚ≥0)
(initial-member : initial ∈ actions)
→ decision/finite-nnrat-argmax A actions initial score ∈ actionsFinset = finset-data/Finsetℚ≥0 = nnrat/NonnegativeRational∈ = finset-data/to-set: membership in a finite set
decision/finite-nnrat-argmax-dominates
decision/finite-nnrat-argmax-dominates.{u} :
(A : Type u) (actions : Finset A) (initial : A) (score : A → ℚ≥0) (candidate : A)
(candidate-member : candidate ∈ actions)
→ score candidate ≤ score (decision/finite-nnrat-argmax A actions initial score)Finset = finset-data/Finsetℚ≥0 = nnrat/NonnegativeRational∈ = finset-data/to-set: membership in a finite set≤ = nnrat/at-most