Reference · Finite types, distributions and Markov chains
rainbow.math.finite.rational-argmin
Executable finite argmin with exact rational minimality certificates.
decision/nnrat-select-min
decision/nnrat-select-min.{u} :
(A : Type u) (score : A → ℚ≥0) (x₁ x₂ : A)
→ Aℚ≥0 = nnrat/NonnegativeRational
list/nnrat-argmin-from
list/nnrat-argmin-from.{u} :
(A : Type u) (score : A → ℚ≥0) (x₁ : A) (x₂ : List A)
→ AList = data/Listℚ≥0 = nnrat/NonnegativeRational
decision/finite-nnrat-argmin
decision/finite-nnrat-argmin.{u} :
(A : Type u) (actions : Finset A) (initial : A) (score : A → ℚ≥0)
→ AFinset = finset-data/Finsetℚ≥0 = nnrat/NonnegativeRational
decision/nnrat-select-min-is-left-or-right
decision/nnrat-select-min-is-left-or-right.{u} :
(A : Type u) (score : A → ℚ≥0) (left right : A)
→ proposition/disjunction (min = left) (min = right)
where min := decision/nnrat-select-min A score left right= = equality/Eqℚ≥0 = nnrat/NonnegativeRational
decision/nnrat-select-min-bounds-left
decision/nnrat-select-min-bounds-left.{u} :
(A : Type u) (score : A → ℚ≥0) (left right : A)
→ score (decision/nnrat-select-min A score left right) ≤ score leftℚ≥0 = nnrat/NonnegativeRational≤ = nnrat/at-most
decision/nnrat-select-min-bounds-right
decision/nnrat-select-min-bounds-right.{u} :
(A : Type u) (score : A → ℚ≥0) (left right : A)
→ score (decision/nnrat-select-min A score left right) ≤ score rightℚ≥0 = nnrat/NonnegativeRational≤ = nnrat/at-most
list/nnrat-argmin-from-bounded-by-initial
list/nnrat-argmin-from-bounded-by-initial.{u} :
(A : Type u) (score : A → ℚ≥0) (initial : A) (source : List A)
→ (fun source₁ => score (list/nnrat-argmin-from A score initial source₁) ≤ score initial) sourceList = data/Listℚ≥0 = nnrat/NonnegativeRational≤ = nnrat/at-most
list/nnrat-argmin-from-bounded-by-member
list/nnrat-argmin-from-bounded-by-member.{u} :
(A : Type u) (score : A → ℚ≥0) (initial : A) (source : List A) (value : A)
(member : list/membership A source value)
→ score (list/nnrat-argmin-from A score initial source) ≤ score valueList = data/Listℚ≥0 = nnrat/NonnegativeRational≤ = nnrat/at-most
list/nnrat-argmin-from-is-initial-or-member
list/nnrat-argmin-from-is-initial-or-member.{u} :
(A : Type u) (score : A → ℚ≥0) (initial : A) (source : List A)
→ proposition/disjunction (list/nnrat-argmin-from A score initial source = initial) (membership)
where membership := list/membership A source (list/nnrat-argmin-from A score initial source)= = equality/EqList = data/Listℚ≥0 = nnrat/NonnegativeRational
decision/finite-nnrat-argmin-is-member
decision/finite-nnrat-argmin-is-member.{u} :
(A : Type u) (actions : Finset A) (initial : A) (score : A → ℚ≥0)
(initial-member : initial ∈ actions)
→ decision/finite-nnrat-argmin A actions initial score ∈ actionsFinset = finset-data/Finsetℚ≥0 = nnrat/NonnegativeRational∈ = finset-data/to-set: membership in a finite set
decision/finite-nnrat-argmin-dominates
decision/finite-nnrat-argmin-dominates.{u} :
(A : Type u) (actions : Finset A) (initial : A) (score : A → ℚ≥0) (candidate : A)
(candidate-member : candidate ∈ actions)
→ score (decision/finite-nnrat-argmin A actions initial score) ≤ score candidateFinset = finset-data/Finsetℚ≥0 = nnrat/NonnegativeRational∈ = finset-data/to-set: membership in a finite set≤ = nnrat/at-most