Built with doc-gen4, running Lean4. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓to navigate, Ctrl+šŸ–±ļøto focus. On Mac, use Cmdinstead of Ctrl.
import Pretty.Supports.Pareto

/-!
## Equivalence of Pareto frontier definitions
-/

/--
The traditional definition of Pareto frontier based on non-domination
-/
def 
pareto_nondom: {α : Type} → Factory α → List Meas → Prop
pareto_nondom
(
F: Factory α
F
:
Factory: Type → Type
Factory
α: ?m.3
α
) (
ms: List Meas
ms
:
List: Type ?u.8 → Type ?u.8
List
(@
Meas: {α : Type} → Type
Meas
α: ?m.3
α
)) :
Prop: Type
Prop
:= āˆ€ (i j :
ā„•: Type
ā„•
) (
h_i: i < List.length ms
h_i
: i <
ms: List Meas
ms
.
length: {α : Type ?u.21} → List α → ā„•
length
) (
h_j: j < List.length ms
h_j
: j <
ms: List Meas
ms
.
length: {α : Type ?u.34} → List α → ā„•
length
), i ≠ j → (¬
dominates: {α : Type} → Factory α → Meas → Meas → Bool
dominates
F: Factory α
F
(
ms: List Meas
ms
.
get: {α : Type ?u.48} → (as : List α) → Fin (List.length as) → α
get
⟨i,

Goals accomplished! šŸ™
α: Type

F: Factory α

ms: List Meas

i, j: ā„•

h_i: i < List.length ms

h_j: j < List.length ms



Goals accomplished! šŸ™
⟩) (
ms: List Meas
ms
.
get: {α : Type ?u.60} → (as : List α) → Fin (List.length as) → α
get
⟨j,

Goals accomplished! šŸ™
α: Type

F: Factory α

ms: List Meas

i, j: ā„•

h_i: i < List.length ms

h_j: j < List.length ms



Goals accomplished! šŸ™
⟩) ∧ ¬
dominates: {α : Type} → Factory α → Meas → Meas → Bool
dominates
F: Factory α
F
(
ms: List Meas
ms
.
get: {α : Type ?u.150} → (as : List α) → Fin (List.length as) → α
get
⟨j,

Goals accomplished! šŸ™
α: Type

F: Factory α

ms: List Meas

i, j: ā„•

h_i: i < List.length ms

h_j: j < List.length ms



Goals accomplished! šŸ™
⟩) (
ms: List Meas
ms
.
get: {α : Type ?u.160} → (as : List α) → Fin (List.length as) → α
get
⟨i,

Goals accomplished! šŸ™
α: Type

F: Factory α

ms: List Meas

i, j: ā„•

h_i: i < List.length ms

h_j: j < List.length ms



Goals accomplished! šŸ™
⟩)) /-- Our formalized definition of Pareto frontier is equivalent to the one in the paper based on non-domination. -/ theorem
pareto_nondom_iff_pareto: āˆ€ {α : Type} {F : Factory α} {ms : List Meas}, pareto F ms ↔ pareto_nondom F ms ∧ last_decreasing ms
pareto_nondom_iff_pareto
:
pareto: {α : Type} → Factory α → List Meas → Prop
pareto
F: ?m.262
F
ms: ?m.269
ms
↔ (
pareto_nondom: {α : Type} → Factory α → List Meas → Prop
pareto_nondom
F: ?m.262
F
ms: ?m.269
ms
∧
last_decreasing: {α : Type} → List Meas → Prop
last_decreasing
ms: ?m.269
ms
) :=

Goals accomplished! šŸ™
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


mp
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


mpr
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: pareto F ms


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: pareto F ms


left
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: pareto F ms


right
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: pareto F ms


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: pareto F ms


āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), ¬i = j → dominates F (List.get ms { val := i, isLt := h_i }) (List.get ms { val := j, isLt := h_j }) = false ∧ dominates F (List.get ms { val := j, isLt := h_j }) (List.get ms { val := i, isLt := h_i }) = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: pareto F ms


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: pareto F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j


dominates F (List.get ms { val := i, isLt := hi }) (List.get ms { val := j, isLt := hj }) = false ∧ dominates F (List.get ms { val := j, isLt := hj }) (List.get ms { val := i, isLt := hi }) = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: pareto F ms


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j


dominates F (List.get ms { val := i, isLt := hi }) (List.get ms { val := j, isLt := hj }) = false ∧ dominates F (List.get ms { val := j, isLt := hj }) (List.get ms { val := i, isLt := hi }) = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: pareto F ms


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last


dominates F (List.get ms { val := i, isLt := hi }) (List.get ms { val := j, isLt := hj }) = false ∧ dominates F (List.get ms { val := j, isLt := hj }) (List.get ms { val := i, isLt := hi }) = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: pareto F ms


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost


dominates F (List.get ms { val := i, isLt := hi }) (List.get ms { val := j, isLt := hj }) = false ∧ dominates F (List.get ms { val := j, isLt := hj }) (List.get ms { val := i, isLt := hi }) = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: pareto F ms


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: pareto F ms


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

h_tri: i < j ∨ i = j ∨ j < i


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: pareto F ms


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

hāœ: i < j


inl
((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

hāœ: i = j ∨ j < i


inr
((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: pareto F ms


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

h_tri: i < j


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_tri: i < j

h_cost: Factory.lt F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

h_tri: i < j


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_tri: i < j

h_cost: Factory.lt F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost


(List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

h_tri: i < j


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_tri: i < j

h_cost: Factory.lt F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost


h
Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

h_tri: i < j


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_tri: i < j

h_cost: Factory.lt F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost


h
Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_tri: i < j

h_cost: ¬Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = true


h
Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_tri: i < j

h_cost: ¬Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = true


h
Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_tri: i < j

h_cost: ¬Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = true


h
Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

h_tri: i < j


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_tri: i < j

h_cost: Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false


h
Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

h_tri: i < j


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)

Goals accomplished! šŸ™
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: pareto F ms


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

h_tri: i = j ∨ j < i


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

hāœ: i = j


inl
((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

hāœ: j < i


inr
((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

h_tri: i = j ∨ j < i


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

h_tri: i = j


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)

Goals accomplished! šŸ™
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

h_tri: i = j ∨ j < i


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

h_tri: j < i


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_tri: j < i

h_cost: Factory.lt F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

h_tri: j < i


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_tri: j < i

h_cost: Factory.lt F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost


(List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

h_tri: j < i


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_tri: j < i

h_cost: Factory.lt F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost


h
Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

h_tri: j < i


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_tri: j < i

h_cost: Factory.lt F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost


h
Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_tri: j < i

h_cost: ¬Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = true


h
Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_tri: j < i

h_cost: ¬Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = true


h
Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_tri: j < i

h_cost: ¬Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = true


h
Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

h_tri: j < i


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_tri: j < i

h_cost: Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false


h
Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: last_decreasing ms ∧ cost_increasing F ms

i, j: ā„•

hi: i < List.length ms

hj: j < List.length ms

h_neq: ¬i = j

h_last: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → (List.get ms { val := i, isLt := h_i }).last > (List.get ms { val := j, isLt := h_j }).last

h_cost: āˆ€ (i j : ā„•) (h_i : i < List.length ms) (h_j : j < List.length ms), i < j → Factory.lt F (List.get ms { val := i, isLt := h_i }).cost (List.get ms { val := j, isLt := h_j }).cost

h_tri: j < i


((List.get ms { val := j, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last ∨ Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := j, isLt := hj }).cost = false) ∧ ((List.get ms { val := i, isLt := hi }).last < (List.get ms { val := j, isLt := hj }).last ∨ Factory.le F (List.get ms { val := j, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)

Goals accomplished! šŸ™
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h: pareto F ms



Goals accomplished! šŸ™
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h_pareto: pareto_nondom F ms

h_last: last_decreasing ms


intro
pareto F ms
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h_pareto: pareto_nondom F ms

h_last: last_decreasing ms


intro
āˆ€ (i : ā„•) (hi : i < List.length ms) (hj : i + 1 < List.length ms), Factory.lt F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := i + 1, isLt := hj }).cost
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h_pareto: pareto_nondom F ms

h_last: last_decreasing ms

i: ā„•

hi: i < List.length ms

hj: i + 1 < List.length ms


intro
Factory.lt F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := i + 1, isLt := hj }).cost
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h_pareto: pareto_nondom F ms

i: ā„•

hi: i < List.length ms

hj: i + 1 < List.length ms

h_last: (List.get ms { val := i, isLt := hi }).last > (List.get ms { val := i + 1, isLt := hj }).last


intro
Factory.lt F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := i + 1, isLt := hj }).cost
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h_pareto: pareto_nondom F ms

i: ā„•

hi: i < List.length ms

hj: i + 1 < List.length ms

h_last: (List.get ms { val := i, isLt := hi }).last > (List.get ms { val := i + 1, isLt := hj }).last


intro
Factory.lt F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := i + 1, isLt := hj }).cost

Goals accomplished! šŸ™
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

h_pareto: pareto_nondom F ms

i: ā„•

hi: i < List.length ms

hj: i + 1 < List.length ms

h_last: (List.get ms { val := i, isLt := hi }).last > (List.get ms { val := i + 1, isLt := hj }).last


i ≠ i + 1

Goals accomplished! šŸ™
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

i: ā„•

hi: i < List.length ms

hj: i + 1 < List.length ms

h_last: (List.get ms { val := i, isLt := hi }).last > (List.get ms { val := i + 1, isLt := hj }).last

h_pareto: ¬dominates F (List.get ms { val := i, isLt := hi }) (List.get ms { val := i + 1, isLt := hj }) = true ∧ ¬dominates F (List.get ms { val := i + 1, isLt := hj }) (List.get ms { val := i, isLt := hi }) = true


intro
Factory.lt F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := i + 1, isLt := hj }).cost
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

i: ā„•

hi: i < List.length ms

hj: i + 1 < List.length ms

h_last: (List.get ms { val := i, isLt := hi }).last > (List.get ms { val := i + 1, isLt := hj }).last

h_pareto: ((List.get ms { val := i, isLt := hi }).last ≤ (List.get ms { val := i + 1, isLt := hj }).last → Factory.le F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := i + 1, isLt := hj }).cost = false) ∧ ((List.get ms { val := i + 1, isLt := hj }).last ≤ (List.get ms { val := i, isLt := hi }).last → Factory.le F (List.get ms { val := i + 1, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false)


intro
Factory.lt F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := i + 1, isLt := hj }).cost
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

i: ā„•

hi: i < List.length ms

hj: i + 1 < List.length ms

h_last: (List.get ms { val := i, isLt := hi }).last > (List.get ms { val := i + 1, isLt := hj }).last

h_pareto: (List.get ms { val := i + 1, isLt := hj }).last ≤ (List.get ms { val := i, isLt := hi }).last → Factory.le F (List.get ms { val := i + 1, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false


intro
Factory.lt F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := i + 1, isLt := hj }).cost
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

i: ā„•

hi: i < List.length ms

hj: i + 1 < List.length ms

h_pareto: (List.get ms { val := i + 1, isLt := hj }).last ≤ (List.get ms { val := i, isLt := hi }).last → Factory.le F (List.get ms { val := i + 1, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false

h_last: (List.get ms { val := i + 1, isLt := hj }).last < (List.get ms { val := i, isLt := hi }).last


intro
Factory.lt F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := i + 1, isLt := hj }).cost
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

i: ā„•

hi: i < List.length ms

hj: i + 1 < List.length ms

h_pareto: (List.get ms { val := i + 1, isLt := hj }).last ≤ (List.get ms { val := i, isLt := hi }).last → Factory.le F (List.get ms { val := i + 1, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false

h_last: (List.get ms { val := i + 1, isLt := hj }).last ≤ (List.get ms { val := i, isLt := hi }).last


intro
Factory.lt F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := i + 1, isLt := hj }).cost
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

i: ā„•

hi: i < List.length ms

hj: i + 1 < List.length ms

h_last: (List.get ms { val := i + 1, isLt := hj }).last ≤ (List.get ms { val := i, isLt := hi }).last

h_pareto: Factory.le F (List.get ms { val := i + 1, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false


intro
Factory.lt F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := i + 1, isLt := hj }).cost
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

i: ā„•

hi: i < List.length ms

hj: i + 1 < List.length ms

h_last: (List.get ms { val := i + 1, isLt := hj }).last ≤ (List.get ms { val := i, isLt := hi }).last

h_pareto: Factory.le F (List.get ms { val := i + 1, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false


intro
Factory.lt F (List.get ms { val := i, isLt := hi }).cost (List.get ms { val := i + 1, isLt := hj }).cost
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

i: ā„•

hi: i < List.length ms

hj: i + 1 < List.length ms

h_last: (List.get ms { val := i + 1, isLt := hj }).last ≤ (List.get ms { val := i, isLt := hi }).last

h_pareto: Factory.le F (List.get ms { val := i + 1, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false


intro
¬Factory.le F (List.get ms { val := i + 1, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = true
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

i: ā„•

hi: i < List.length ms

hj: i + 1 < List.length ms

h_last: (List.get ms { val := i + 1, isLt := hj }).last ≤ (List.get ms { val := i, isLt := hi }).last

h_pareto: Factory.le F (List.get ms { val := i + 1, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false


intro
¬Factory.le F (List.get ms { val := i + 1, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = true
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas


Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas

i: ā„•

hi: i < List.length ms

hj: i + 1 < List.length ms

h_last: (List.get ms { val := i + 1, isLt := hj }).last ≤ (List.get ms { val := i, isLt := hi }).last

h_pareto: Factory.le F (List.get ms { val := i + 1, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false


intro
Factory.le F (List.get ms { val := i + 1, isLt := hj }).cost (List.get ms { val := i, isLt := hi }).cost = false
Ī±āœ: Type

F: Factory Ī±āœ

ms: List Meas



Goals accomplished! šŸ™