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.Defs.Basic
import Pretty.Supports.Basic
import Pretty.Supports.FactoryMath
import Pretty.Supports.Domination
import Pretty.Supports.LastAndCost
import Pretty.Supports.Dedup

/-!
Various lemmas about `pareto`.
-/

lemma 
pareto_head: ∀ {α : Type} {F : Factory α} {m m' : Meas} {ms : List Meas}, pareto F (m :: m' :: ms)m.last > m'.last Factory.lt F m.cost m'.cost
pareto_head
(
h: pareto F (m :: m' :: ms)
h
:
pareto: {α : Type} → Factory αList MeasProp
pareto
F: ?m.4
F
(
m: ?m.14
m
::
m': ?m.24
m'
::
ms: ?m.34
ms
)) :
m: ?m.14
m
.
last: {α : Type} → Meas
last
>
m': ?m.24
m'
.
last: {α : Type} → Meas
last
F: ?m.4
F
.
lt: {α : Type} → Factory αααProp
lt
m: ?m.14
m
.
cost: {α : Type} → Measα
cost
m': ?m.24
m'
.
cost: {α : Type} → Measα
cost
:=

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: pareto F (m :: m' :: ms)


m.last > m'.last Factory.lt F m.cost m'.cost
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: pareto F (m :: m' :: ms)


left
m.last > m'.last
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: pareto F (m :: m' :: ms)


right
Factory.lt F m.cost m'.cost
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: pareto F (m :: m' :: ms)


m.last > m'.last Factory.lt F m.cost m'.cost
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: pareto F (m :: m' :: ms)


m.last > m'.last

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: pareto F (m :: m' :: ms)


m.last > m'.last Factory.lt F m.cost m'.cost
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: pareto F (m :: m' :: ms)


Factory.lt F m.cost m'.cost

Goals accomplished! 🐙
lemma
pareto_rest: ∀ {α : Type} {F : Factory α} {ms : List Meas} {m : Meas}, pareto F (m :: ms)pareto F ms
pareto_rest
{
ms: List Meas
ms
:
List: Type ?u.144 → Type ?u.144
List
Meas: {α : Type} → Type
Meas
} {
m: Meas
m
:
Meas: {α : Type} → Type
Meas
} (
h: pareto F (m :: ms)
h
:
pareto: {α : Type} → Factory αList MeasProp
pareto
F: ?m.141
F
(
m: Meas
m
::
ms: List Meas
ms
)) :
pareto: {α : Type} → Factory αList MeasProp
pareto
F: ?m.141
F
ms: List Meas
ms
:=

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: pareto F (m :: ms)


pareto F ms
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: pareto F (m :: ms)


left
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: pareto F (m :: ms)


right
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: pareto F (m :: ms)


pareto F ms
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: pareto F (m :: ms)



Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: pareto F (m :: ms)


pareto F ms
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: pareto F (m :: ms)



Goals accomplished! 🐙
lemma
pareto_drop: ∀ {α : Type} {F : Factory α} {ms : List Meas} (n : ), pareto F mspareto F (List.drop n ms)
pareto_drop
(
n:
n
:
: Type
) (
h: pareto F ms
h
:
pareto: {α : Type} → Factory αList MeasProp
pareto
F: ?m.234
F
ms: ?m.243
ms
) :
pareto: {α : Type} → Factory αList MeasProp
pareto
F: ?m.234
F
(
ms: ?m.243
ms
.
drop: {α : Type ?u.254} → List αList α
drop
n:
n
) :=

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

n:

h: pareto F ms


pareto F (List.drop n ms)
α✝: Type

F: Factory α✝

n:

h: pareto F []


nil
pareto F (List.drop n [])
α✝: Type

F: Factory α✝

head✝: Meas

tail✝: List Meas

tail_ih✝: ∀ (n : ), pareto F tail✝pareto F (List.drop n tail✝)

n:

h: pareto F (head✝ :: tail✝)


cons
pareto F (List.drop n (head✝ :: tail✝))
α✝: Type

F: Factory α✝

ms: List Meas

n:

h: pareto F ms


pareto F (List.drop n ms)
α✝: Type

F: Factory α✝

n:

h: pareto F []


pareto F (List.drop n [])

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

n:

h: pareto F ms


pareto F (List.drop n ms)
α✝: Type

F: Factory α✝

hd: Meas

tl: List Meas

ih: ∀ (n : ), pareto F tlpareto F (List.drop n tl)

n:

h: pareto F (hd :: tl)


pareto F (List.drop n (hd :: tl))
α✝: Type

F: Factory α✝

hd: Meas

tl: List Meas

ih: ∀ (n : ), pareto F tlpareto F (List.drop n tl)

n:

h: pareto F (hd :: tl)


pareto F (List.drop n (hd :: tl))
α✝: Type

F: Factory α✝

hd: Meas

tl: List Meas

ih: ∀ (n : ), pareto F tlpareto F (List.drop n tl)

h: pareto F (hd :: tl)


zero
α✝: Type

F: Factory α✝

hd: Meas

tl: List Meas

ih: ∀ (n : ), pareto F tlpareto F (List.drop n tl)

h: pareto F (hd :: tl)

n✝:


succ
pareto F (List.drop (Nat.succ n✝) (hd :: tl))
α✝: Type

F: Factory α✝

hd: Meas

tl: List Meas

ih: ∀ (n : ), pareto F tlpareto F (List.drop n tl)

h: pareto F (hd :: tl)

n✝:


succ
pareto F (List.drop (Nat.succ n✝) (hd :: tl))
α✝: Type

F: Factory α✝

hd: Meas

tl: List Meas

ih: ∀ (n : ), pareto F tlpareto F (List.drop n tl)

n:

h: pareto F (hd :: tl)


pareto F (List.drop n (hd :: tl))
α✝: Type

F: Factory α✝

hd: Meas

tl: List Meas

ih: ∀ (n : ), pareto F tlpareto F (List.drop n tl)

h: pareto F (hd :: tl)

n:


pareto F (List.drop (Nat.succ n) (hd :: tl))

Goals accomplished! 🐙
lemma
pareto_rest': ∀ {α : Type} {F : Factory α} {m m' : Meas} {ms : List Meas}, pareto F (m :: m' :: ms)pareto F (m :: ms)
pareto_rest'
(
h: pareto F (m :: m' :: ms)
h
:
pareto: {α : Type} → Factory αList MeasProp
pareto
F: ?m.647
F
(
m: ?m.657
m
::
m': ?m.667
m'
::
ms: ?m.677
ms
)) :
pareto: {α : Type} → Factory αList MeasProp
pareto
F: ?m.647
F
(
m: ?m.657
m
::
ms: ?m.677
ms
) :=

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: pareto F (m :: m' :: ms)


pareto F (m :: ms)
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).last < (List.get (m :: m' :: ms) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), Factory.lt F (List.get (m :: m' :: ms) { val := i, isLt := hi }).cost (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).cost


(∀ (i : ) (hi : i < List.length (m :: ms)) (hj : i + 1 < List.length (m :: ms)), (List.get ms { val := i, isLt := (_ : i < List.length ms) }).last < (List.get (m :: ms) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: ms)) (hj : i + 1 < List.length (m :: ms)), Factory.lt F (List.get (m :: ms) { val := i, isLt := hi }).cost (List.get ms { val := i, isLt := (_ : i < List.length ms) }).cost
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: pareto F (m :: m' :: ms)


pareto F (m :: ms)
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).last < (List.get (m :: m' :: ms) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), Factory.lt F (List.get (m :: m' :: ms) { val := i, isLt := hi }).cost (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).cost


left
∀ (i : ) (hi : i < List.length (m :: ms)) (hj : i + 1 < List.length (m :: ms)), (List.get ms { val := i, isLt := (_ : i < List.length ms) }).last < (List.get (m :: ms) { val := i, isLt := hi }).last
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).last < (List.get (m :: m' :: ms) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), Factory.lt F (List.get (m :: m' :: ms) { val := i, isLt := hi }).cost (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).cost


right
∀ (i : ) (hi : i < List.length (m :: ms)) (hj : i + 1 < List.length (m :: ms)), Factory.lt F (List.get (m :: ms) { val := i, isLt := hi }).cost (List.get ms { val := i, isLt := (_ : i < List.length ms) }).cost
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: pareto F (m :: m' :: ms)


pareto F (m :: ms)
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).last < (List.get (m :: m' :: ms) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), Factory.lt F (List.get (m :: m' :: ms) { val := i, isLt := hi }).cost (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).cost


∀ (i : ) (hi : i < List.length (m :: ms)) (hj : i + 1 < List.length (m :: ms)), (List.get ms { val := i, isLt := (_ : i < List.length ms) }).last < (List.get (m :: ms) { val := i, isLt := hi }).last
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).last < (List.get (m :: m' :: ms) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), Factory.lt F (List.get (m :: m' :: ms) { val := i, isLt := hi }).cost (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).cost

i:

hi: i < List.length (m :: ms)

hj: i + 1 < List.length (m :: ms)


(List.get ms { val := i, isLt := (_ : i < List.length ms) }).last < (List.get (m :: ms) { val := i, isLt := hi }).last
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).last < (List.get (m :: m' :: ms) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), Factory.lt F (List.get (m :: m' :: ms) { val := i, isLt := hi }).cost (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).cost


∀ (i : ) (hi : i < List.length (m :: ms)) (hj : i + 1 < List.length (m :: ms)), (List.get ms { val := i, isLt := (_ : i < List.length ms) }).last < (List.get (m :: ms) { val := i, isLt := hi }).last
α✝: Type

F: Factory α✝

m, m': Meas

i:

h: (∀ (i : ) (hi : i < List.length [m, m']) (hj : i + 1 < List.length [m, m']), (List.get [m'] { val := i, isLt := (_ : i < List.length [m']) }).last < (List.get [m, m'] { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length [m, m']) (hj : i + 1 < List.length [m, m']), Factory.lt F (List.get [m, m'] { val := i, isLt := hi }).cost (List.get [m'] { val := i, isLt := (_ : i < List.length [m']) }).cost

hi: i < List.length [m]

hj: i + 1 < List.length [m]


nil
(List.get [] { val := i, isLt := (_ : i < List.length []) }).last < (List.get [m] { val := i, isLt := hi }).last
α✝: Type

F: Factory α✝

m, m': Meas

i:

head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: i < List.length (m :: head✝ :: tail✝)

hj: i + 1 < List.length (m :: head✝ :: tail✝)


cons
(List.get (head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := i, isLt := hi }).last
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).last < (List.get (m :: m' :: ms) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), Factory.lt F (List.get (m :: m' :: ms) { val := i, isLt := hi }).cost (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).cost


∀ (i : ) (hi : i < List.length (m :: ms)) (hj : i + 1 < List.length (m :: ms)), (List.get ms { val := i, isLt := (_ : i < List.length ms) }).last < (List.get (m :: ms) { val := i, isLt := hi }).last
α✝: Type

F: Factory α✝

m, m': Meas

i:

h: (∀ (i : ) (hi : i < List.length [m, m']) (hj : i + 1 < List.length [m, m']), (List.get [m'] { val := i, isLt := (_ : i < List.length [m']) }).last < (List.get [m, m'] { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length [m, m']) (hj : i + 1 < List.length [m, m']), Factory.lt F (List.get [m, m'] { val := i, isLt := hi }).cost (List.get [m'] { val := i, isLt := (_ : i < List.length [m']) }).cost

hi: i < List.length [m]

hj: i + 1 < List.length [m]


(List.get [] { val := i, isLt := (_ : i < List.length []) }).last < (List.get [m] { val := i, isLt := hi }).last

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).last < (List.get (m :: m' :: ms) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), Factory.lt F (List.get (m :: m' :: ms) { val := i, isLt := hi }).cost (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).cost


∀ (i : ) (hi : i < List.length (m :: ms)) (hj : i + 1 < List.length (m :: ms)), (List.get ms { val := i, isLt := (_ : i < List.length ms) }).last < (List.get (m :: ms) { val := i, isLt := hi }).last
hd: Type

F: Factory hd

m, m': Meas

i:

head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: i < List.length (m :: head✝ :: tail✝)

hj: i + 1 < List.length (m :: head✝ :: tail✝)


(List.get (head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := i, isLt := hi }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)


zero
(List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

n✝:

hi: Nat.succ n✝ < List.length (m :: head✝ :: tail✝)

hj: Nat.succ n✝ + 1 < List.length (m :: head✝ :: tail✝)


succ
(List.get (head✝ :: tail✝) { val := Nat.succ n✝, isLt := (_ : Nat.succ n✝ < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.succ n✝, isLt := hi }).last
hd: Type

F: Factory hd

m, m': Meas

i:

head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: i < List.length (m :: head✝ :: tail✝)

hj: i + 1 < List.length (m :: head✝ :: tail✝)


(List.get (head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := i, isLt := hi }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)


(List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)


(List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).last

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)


0 < List.length (m :: m' :: head✝ :: tail✝)

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)


(List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).last

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)


0 + 1 < List.length (m :: m' :: head✝ :: tail✝)

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: (List.get (m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < Nat.succ (List.length tail✝ + 2)) }).last


(List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)


(List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: (List.get (m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < Nat.succ (List.length tail✝ + 2)) }).last


(List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).last

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: (List.get (m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < Nat.succ (List.length tail✝ + 2)) }).last


1 < List.length (m :: m' :: head✝ :: tail✝)

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: (List.get (m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < Nat.succ (List.length tail✝ + 2)) }).last


(List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).last

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: (List.get (m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < Nat.succ (List.length tail✝ + 2)) }).last


1 + 1 < List.length (m :: m' :: head✝ :: tail✝)
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: (List.get (m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < Nat.succ (List.length tail✝ + 2)) }).last


1 + 1 < List.length (m :: m' :: head✝ :: tail✝)
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: (List.get (m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < Nat.succ (List.length tail✝ + 2)) }).last


1 + 1 < List.length (m :: m' :: head✝ :: tail✝)

Goals accomplished! 🐙

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: (List.get (m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < Nat.succ (List.length tail✝ + 2)) }).last

h₂: (List.get (m' :: head✝ :: tail✝) { val := 1, isLt := (_ : 1 < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := 1, isLt := (_ : 1 < Nat.succ (Nat.succ (List.length tail✝ + 1))) }).last


(List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)


(List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: m'.last < m.last

h₂: head✝.last < m'.last


head✝.last < m.last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)


(List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).last

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m': Meas

i:

head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: i < List.length (m :: head✝ :: tail✝)

hj: i + 1 < List.length (m :: head✝ :: tail✝)


(List.get (head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := i, isLt := hi }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)


(List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))


(List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)


(List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))


(List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hi: i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hj: i + 1 + 1 < Nat.succ (Nat.succ (List.length tail✝))


(List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi✝ }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))


(List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hi: i + 1 < List.length tail✝ + 1 + 1

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hj: i + 1 + 1 < List.length tail✝ + 1 + 1


(List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi✝ }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hi: i + 1 < List.length tail✝ + 1 + 1

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hj: i + 1 + 1 < List.length tail✝ + 1 + 1


(List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi✝ }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hi: i + 1 < List.length tail✝ + 1 + 1

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hj: i + 1 + 1 < List.length tail✝ + 1 + 1


(List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi✝ }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)


(List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


(List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi✝ }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)


(List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


(List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi✝ }).last

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 < List.length (m :: m' :: head✝ :: tail✝)
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 < List.length (m :: m' :: head✝ :: tail✝)
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 < List.length (m :: m' :: head✝ :: tail✝)
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 < List.length (m :: m' :: head✝ :: tail✝)
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 < List.length tail✝ + 2 + 1
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 < List.length tail✝ + 2 + 1
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 < List.length tail✝ + 2 + 1
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 < List.length (m :: m' :: head✝ :: tail✝)

Goals accomplished! 🐙

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


(List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi✝ }).last

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < List.length (m :: m' :: head✝ :: tail✝)
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < List.length (m :: m' :: head✝ :: tail✝)
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < List.length (m :: m' :: head✝ :: tail✝)
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < Nat.succ (Nat.succ (Nat.succ (List.length tail✝)))
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < Nat.succ (Nat.succ (Nat.succ (List.length tail✝)))
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < List.length (m :: m' :: head✝ :: tail✝)
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < Nat.succ (Nat.succ (Nat.succ (List.length tail✝)))
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < List.length tail✝ + 2 + 1
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < List.length tail✝ + 2 + 1
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < List.length tail✝ + 2 + 1
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < List.length (m :: m' :: head✝ :: tail✝)

Goals accomplished! 🐙

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < Nat.succ (Nat.succ (List.length tail✝))

hj✝: Nat.succ i + 1 < Nat.succ (Nat.succ (List.length tail✝))

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝

h': (List.get (m' :: head✝ :: tail✝) { val := i + 2, isLt := (_ : i + 2 < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i + 2, isLt := (_ : i + 2 < List.length (m :: m' :: head✝ :: tail✝)) }).last


(List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi✝ }).last
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)


(List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).last < (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi }).last

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: pareto F (m :: m' :: ms)


pareto F (m :: ms)
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).last < (List.get (m :: m' :: ms) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), Factory.lt F (List.get (m :: m' :: ms) { val := i, isLt := hi }).cost (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).cost


∀ (i : ) (hi : i < List.length (m :: ms)) (hj : i + 1 < List.length (m :: ms)), Factory.lt F (List.get (m :: ms) { val := i, isLt := hi }).cost (List.get ms { val := i, isLt := (_ : i < List.length ms) }).cost
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).last < (List.get (m :: m' :: ms) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), Factory.lt F (List.get (m :: m' :: ms) { val := i, isLt := hi }).cost (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).cost

i:

hi: i < List.length (m :: ms)

hj: i + 1 < List.length (m :: ms)


Factory.lt F (List.get (m :: ms) { val := i, isLt := hi }).cost (List.get ms { val := i, isLt := (_ : i < List.length ms) }).cost
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).last < (List.get (m :: m' :: ms) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), Factory.lt F (List.get (m :: m' :: ms) { val := i, isLt := hi }).cost (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).cost


∀ (i : ) (hi : i < List.length (m :: ms)) (hj : i + 1 < List.length (m :: ms)), Factory.lt F (List.get (m :: ms) { val := i, isLt := hi }).cost (List.get ms { val := i, isLt := (_ : i < List.length ms) }).cost
α✝: Type

F: Factory α✝

m, m': Meas

i:

h: (∀ (i : ) (hi : i < List.length [m, m']) (hj : i + 1 < List.length [m, m']), (List.get [m'] { val := i, isLt := (_ : i < List.length [m']) }).last < (List.get [m, m'] { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length [m, m']) (hj : i + 1 < List.length [m, m']), Factory.lt F (List.get [m, m'] { val := i, isLt := hi }).cost (List.get [m'] { val := i, isLt := (_ : i < List.length [m']) }).cost

hi: i < List.length [m]

hj: i + 1 < List.length [m]


nil
Factory.lt F (List.get [m] { val := i, isLt := hi }).cost (List.get [] { val := i, isLt := (_ : i < List.length []) }).cost
α✝: Type

F: Factory α✝

m, m': Meas

i:

head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: i < List.length (m :: head✝ :: tail✝)

hj: i + 1 < List.length (m :: head✝ :: tail✝)


cons
Factory.lt F (List.get (m :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (head✝ :: tail✝)) }).cost
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).last < (List.get (m :: m' :: ms) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), Factory.lt F (List.get (m :: m' :: ms) { val := i, isLt := hi }).cost (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).cost


∀ (i : ) (hi : i < List.length (m :: ms)) (hj : i + 1 < List.length (m :: ms)), Factory.lt F (List.get (m :: ms) { val := i, isLt := hi }).cost (List.get ms { val := i, isLt := (_ : i < List.length ms) }).cost
α✝: Type

F: Factory α✝

m, m': Meas

i:

h: (∀ (i : ) (hi : i < List.length [m, m']) (hj : i + 1 < List.length [m, m']), (List.get [m'] { val := i, isLt := (_ : i < List.length [m']) }).last < (List.get [m, m'] { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length [m, m']) (hj : i + 1 < List.length [m, m']), Factory.lt F (List.get [m, m'] { val := i, isLt := hi }).cost (List.get [m'] { val := i, isLt := (_ : i < List.length [m']) }).cost

hi: i < List.length [m]

hj: i + 1 < List.length [m]


Factory.lt F (List.get [m] { val := i, isLt := hi }).cost (List.get [] { val := i, isLt := (_ : i < List.length []) }).cost

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

m, m': Meas

ms: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).last < (List.get (m :: m' :: ms) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: ms)) (hj : i + 1 < List.length (m :: m' :: ms)), Factory.lt F (List.get (m :: m' :: ms) { val := i, isLt := hi }).cost (List.get (m' :: ms) { val := i, isLt := (_ : i < List.length (m' :: ms)) }).cost


∀ (i : ) (hi : i < List.length (m :: ms)) (hj : i + 1 < List.length (m :: ms)), Factory.lt F (List.get (m :: ms) { val := i, isLt := hi }).cost (List.get ms { val := i, isLt := (_ : i < List.length ms) }).cost
hd: Type

F: Factory hd

m, m': Meas

i:

head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: i < List.length (m :: head✝ :: tail✝)

hj: i + 1 < List.length (m :: head✝ :: tail✝)


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (head✝ :: tail✝)) }).cost
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)


zero
Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).cost
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

n✝:

hi: Nat.succ n✝ < List.length (m :: head✝ :: tail✝)

hj: Nat.succ n✝ + 1 < List.length (m :: head✝ :: tail✝)


succ
Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.succ n✝, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := Nat.succ n✝, isLt := (_ : Nat.succ n✝ < List.length (head✝ :: tail✝)) }).cost
hd: Type

F: Factory hd

m, m': Meas

i:

head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: i < List.length (m :: head✝ :: tail✝)

hj: i + 1 < List.length (m :: head✝ :: tail✝)


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (head✝ :: tail✝)) }).cost
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).cost
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).cost

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)


0 < List.length (m :: m' :: head✝ :: tail✝)

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).cost

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)


0 + 1 < List.length (m :: m' :: head✝ :: tail✝)

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < Nat.succ (List.length tail✝ + 2)) }).cost (List.get (m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < List.length (m' :: head✝ :: tail✝)) }).cost


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).cost
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).cost
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < Nat.succ (List.length tail✝ + 2)) }).cost (List.get (m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < List.length (m' :: head✝ :: tail✝)) }).cost


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).cost

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < Nat.succ (List.length tail✝ + 2)) }).cost (List.get (m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < List.length (m' :: head✝ :: tail✝)) }).cost


1 < List.length (m :: m' :: head✝ :: tail✝)

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < Nat.succ (List.length tail✝ + 2)) }).cost (List.get (m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < List.length (m' :: head✝ :: tail✝)) }).cost


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).cost

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < Nat.succ (List.length tail✝ + 2)) }).cost (List.get (m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < List.length (m' :: head✝ :: tail✝)) }).cost


1 + 1 < List.length (m :: m' :: head✝ :: tail✝)

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < Nat.succ (List.length tail✝ + 2)) }).cost (List.get (m' :: head✝ :: tail✝) { val := 0, isLt := (_ : 0 < List.length (m' :: head✝ :: tail✝)) }).cost

h₂: Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := 1, isLt := (_ : 1 < Nat.succ (Nat.succ (List.length tail✝ + 1))) }).cost (List.get (m' :: head✝ :: tail✝) { val := 1, isLt := (_ : 1 < List.length (m' :: head✝ :: tail✝)) }).cost


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).cost
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).cost
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: Factory.lt F m.cost m'.cost

h₂: Factory.lt F m'.cost head✝.cost


Factory.lt F m.cost head✝.cost
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.zero, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := Nat.zero, isLt := (_ : Nat.zero < List.length (head✝ :: tail✝)) }).cost
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: Factory.lt F m.cost m'.cost

h₂: Factory.lt F m'.cost head✝.cost


h₁
Factory.lt F m.cost ?c₂
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: Factory.lt F m.cost m'.cost

h₂: Factory.lt F m'.cost head✝.cost


h₂
Factory.lt F ?c₂ head✝.cost
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: Factory.lt F m.cost m'.cost

h₂: Factory.lt F m'.cost head✝.cost


c₂
hd
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: Factory.lt F m.cost m'.cost

h₂: Factory.lt F m'.cost head✝.cost


Factory.lt F m.cost head✝.cost
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: Factory.lt F m.cost m'.cost

h₂: Factory.lt F m'.cost head✝.cost


h₁
Factory.lt F m.cost ?c₂
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: Factory.lt F m.cost m'.cost

h₂: Factory.lt F m'.cost head✝.cost


h₂
Factory.lt F ?c₂ head✝.cost
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: Factory.lt F m.cost m'.cost

h₂: Factory.lt F m'.cost head✝.cost


c₂
hd
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: Nat.zero < List.length (m :: head✝ :: tail✝)

hj: Nat.zero + 1 < List.length (m :: head✝ :: tail✝)

h₁: Factory.lt F m.cost m'.cost

h₂: Factory.lt F m'.cost head✝.cost


Factory.lt F m.cost head✝.cost

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m': Meas

i:

head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

hi: i < List.length (m :: head✝ :: tail✝)

hj: i + 1 < List.length (m :: head✝ :: tail✝)


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (head✝ :: tail✝)) }).cost
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).cost
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi✝ }).cost (List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).cost
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).cost
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi✝ }).cost (List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).cost

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 < List.length (m :: m' :: head✝ :: tail✝)
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 < List.length (m :: m' :: head✝ :: tail✝)
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 < List.length (m :: m' :: head✝ :: tail✝)
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 < List.length (m :: m' :: head✝ :: tail✝)
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 < List.length tail✝ + 2 + 1
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 < List.length tail✝ + 2 + 1
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 < List.length tail✝ + 2 + 1
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 < List.length (m :: m' :: head✝ :: tail✝)

Goals accomplished! 🐙

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi✝ }).cost (List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).cost

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < List.length (m :: m' :: head✝ :: tail✝)
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < List.length (m :: m' :: head✝ :: tail✝)
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < List.length (m :: m' :: head✝ :: tail✝)
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < Nat.succ (Nat.succ (Nat.succ (List.length tail✝)))
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < Nat.succ (Nat.succ (Nat.succ (List.length tail✝)))
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < List.length (m :: m' :: head✝ :: tail✝)
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < Nat.succ (Nat.succ (Nat.succ (List.length tail✝)))
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < List.length tail✝ + 2 + 1
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < List.length tail✝ + 2 + 1
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < List.length tail✝ + 2 + 1
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝


i + 2 + 1 < List.length (m :: m' :: head✝ :: tail✝)

Goals accomplished! 🐙

Goals accomplished! 🐙
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi✝: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj✝: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)

hi: i < List.length tail✝ + 1

hj: i < List.length tail✝

h': Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i + 2, isLt := (_ : i + 2 < List.length (m :: m' :: head✝ :: tail✝)) }).cost (List.get (m' :: head✝ :: tail✝) { val := i + 2, isLt := (_ : i + 2 < List.length (m' :: head✝ :: tail✝)) }).cost


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi✝ }).cost (List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).cost
hd: Type

F: Factory hd

m, m', head✝: Meas

tail✝: List Meas

h: (∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).last < (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).last) ∀ (i : ) (hi : i < List.length (m :: m' :: head✝ :: tail✝)) (hj : i + 1 < List.length (m :: m' :: head✝ :: tail✝)), Factory.lt F (List.get (m :: m' :: head✝ :: tail✝) { val := i, isLt := hi }).cost (List.get (m' :: head✝ :: tail✝) { val := i, isLt := (_ : i < List.length (m' :: head✝ :: tail✝)) }).cost

i:

hi: Nat.succ i < List.length (m :: head✝ :: tail✝)

hj: Nat.succ i + 1 < List.length (m :: head✝ :: tail✝)


Factory.lt F (List.get (m :: head✝ :: tail✝) { val := Nat.succ i, isLt := hi }).cost (List.get (head✝ :: tail✝) { val := Nat.succ i, isLt := (_ : Nat.succ i < List.length (head✝ :: tail✝)) }).cost

Goals accomplished! 🐙
lemma
pareto_one: ∀ {α : Type} {F : Factory α} (m : Meas), pareto F [m]
pareto_one
(
m: Meas
m
:
Meas: {α : Type} → Type
Meas
) :
pareto: {α : Type} → Factory αList MeasProp
pareto
F: ?m.24127
F
[
m: Meas
m
] :=

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

m: Meas


pareto F [m]

Goals accomplished! 🐙
lemma
pareto_cons: ∀ {α : Type} {F : Factory α} (ms : List Meas) (x y : Meas), x.last > y.lastFactory.lt F x.cost y.costpareto F (y :: ms)pareto F (x :: y :: ms)
pareto_cons
(
ms: List Meas
ms
:
List: Type ?u.24263 → Type ?u.24263
List
Meas: {α : Type} → Type
Meas
) (
x: Meas
x
y: Meas
y
:
Meas: {α : Type} → Type
Meas
) (
h_last: x.last > y.last
h_last
:
x: Meas
x
.
last: {α : Type} → Meas
last
>
y: Meas
y
.
last: {α : Type} → Meas
last
) (
h_cost: sorryAx (Sort ?u.24255) true
h_cost
:
F: ?m.24260
F
F.lt x.cost y.cost: Sort ?u.24255
.
lt: {α : Type} → Factory αααProp
lt
F.lt x.cost y.cost: Sort ?u.24255
x: Meas
x
F.lt x.cost y.cost: Sort ?u.24255
.
cost: {α : Type} → Measα
cost
F.lt x.cost y.cost: Sort ?u.24255
y: Meas
y
F.lt x.cost y.cost: Sort ?u.24255
.
cost: {α : Type} → Measα
cost
) (
h: pareto F (y :: ms)
h
:
pareto: {α : Type} → Factory αList MeasProp
pareto
F: ?m.24260
F
(
y: Meas
y
::
ms: List Meas
ms
)) :
pareto: {α : Type} → Factory αList MeasProp
pareto
F: ?m.24260
F
(
x: Meas
x
::
y: Meas
y
::
ms: List Meas
ms
) :=

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: pareto F (y :: ms)


pareto F (x :: y :: ms)
α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: last_decreasing (y :: ms) cost_increasing F (y :: ms)


α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: pareto F (y :: ms)


pareto F (x :: y :: ms)
α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: last_decreasing (y :: ms) cost_increasing F (y :: ms)


left
α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: last_decreasing (y :: ms) cost_increasing F (y :: ms)


right
cost_increasing F (x :: y :: ms)
α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: pareto F (y :: ms)


pareto F (x :: y :: ms)
α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: last_decreasing (y :: ms) cost_increasing F (y :: ms)


α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: last_decreasing (y :: ms) cost_increasing F (y :: ms)


h_last
x.last > y.last
α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: last_decreasing (y :: ms) cost_increasing F (y :: ms)


h
α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: last_decreasing (y :: ms) cost_increasing F (y :: ms)


α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: last_decreasing (y :: ms) cost_increasing F (y :: ms)


x.last > y.last

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: last_decreasing (y :: ms) cost_increasing F (y :: ms)


α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: last_decreasing (y :: ms) cost_increasing F (y :: ms)



Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: pareto F (y :: ms)


pareto F (x :: y :: ms)
α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: last_decreasing (y :: ms) cost_increasing F (y :: ms)


cost_increasing F (x :: y :: ms)
α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: last_decreasing (y :: ms) cost_increasing F (y :: ms)


h_cost
Factory.lt F x.cost y.cost
α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: last_decreasing (y :: ms) cost_increasing F (y :: ms)


h
α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: last_decreasing (y :: ms) cost_increasing F (y :: ms)


cost_increasing F (x :: y :: ms)
α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: last_decreasing (y :: ms) cost_increasing F (y :: ms)


Factory.lt F x.cost y.cost

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: last_decreasing (y :: ms) cost_increasing F (y :: ms)


cost_increasing F (x :: y :: ms)
α✝: Type

F: Factory α✝

ms: List Meas

x, y: Meas

h_last: x.last > y.last

h_cost: Factory.lt F x.cost y.cost

h: last_decreasing (y :: ms) cost_increasing F (y :: ms)



Goals accomplished! 🐙
lemma
pareto_concat: ∀ {α : Type} {F : Factory α} {ms : List Meas} (m : Meas), pareto F mspareto F (dedup F (List.map (fun m' => Meas.concat F m m') ms))
pareto_concat
(
m: Meas
m
:
Meas: {α : Type} → Type
Meas
) (
h: pareto F ms
h
:
pareto: {α : Type} → Factory αList MeasProp
pareto
F: ?m.24626
F
ms: ?m.24636
ms
) :
pareto: {α : Type} → Factory αList MeasProp
pareto
F: ?m.24626
F
(
dedup: {α : Type} → Factory αList MeasList Meas
dedup
F: ?m.24626
F
(
ms: ?m.24636
ms
.
map: {α : Type ?u.24652} → {β : Type ?u.24651} → (αβ) → List αList β
map
(fun
m': ?m.24660
m'
=>
Meas.concat: {α : Type} → Factory αMeasMeasMeas
Meas.concat
F: ?m.24626
F
m: Meas
m
m': ?m.24660
m'
))) :=

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: pareto F ms


pareto F (dedup F (List.map (fun m' => Meas.concat F m m') ms))
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: last_decreasing ms cost_increasing F ms


last_decreasing (dedup F (List.map (fun m' => Meas.concat F m m') ms)) cost_increasing F (dedup F (List.map (fun m' => Meas.concat F m m') ms))
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: pareto F ms


pareto F (dedup F (List.map (fun m' => Meas.concat F m m') ms))
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: last_decreasing ms cost_increasing F ms


left
last_decreasing (dedup F (List.map (fun m' => Meas.concat F m m') ms))
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: last_decreasing ms cost_increasing F ms


right
cost_increasing F (dedup F (List.map (fun m' => Meas.concat F m m') ms))
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: pareto F ms


pareto F (dedup F (List.map (fun m' => Meas.concat F m m') ms))
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: last_decreasing ms cost_increasing F ms


last_decreasing (dedup F (List.map (fun m' => Meas.concat F m m') ms))
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: last_decreasing ms cost_increasing F ms


h
last_decreasing (List.map (fun m' => Meas.concat F m m') ms)
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: last_decreasing ms cost_increasing F ms


last_decreasing (dedup F (List.map (fun m' => Meas.concat F m m') ms))
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: last_decreasing ms cost_increasing F ms


h.h
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: last_decreasing ms cost_increasing F ms


last_decreasing (dedup F (List.map (fun m' => Meas.concat F m m') ms))

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: pareto F ms


pareto F (dedup F (List.map (fun m' => Meas.concat F m m') ms))
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: last_decreasing ms cost_increasing F ms


cost_increasing F (dedup F (List.map (fun m' => Meas.concat F m m') ms))
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: last_decreasing ms cost_increasing F ms


h
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: last_decreasing ms cost_increasing F ms


cost_increasing F (dedup F (List.map (fun m' => Meas.concat F m m') ms))
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: last_decreasing ms cost_increasing F ms


h.h
α✝: Type

F: Factory α✝

ms: List Meas

m: Meas

h: last_decreasing ms cost_increasing F ms


cost_increasing F (dedup F (List.map (fun m' => Meas.concat F m m') ms))

Goals accomplished! 🐙
lemma
pareto_map_lift_align: ∀ {α : Type} {F : Factory α} {ms : List Meas} (n : ), pareto F mspareto F (List.map (Meas.adjust_align n) ms)
pareto_map_lift_align
(
n:
n
:
: Type
) (
h: pareto F ms
h
:
pareto: {α : Type} → Factory αList MeasProp
pareto
F: ?m.24879
F
ms: ?m.24888
ms
) :
pareto: {α : Type} → Factory αList MeasProp
pareto
F: ?m.24879
F
(
ms: ?m.24888
ms
.
map: {α : Type ?u.24900} → {β : Type ?u.24899} → (αβ) → List αList β
map
(
Meas.adjust_align: {α : Type} → MeasMeas
Meas.adjust_align
n:
n
)) :=

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

n:

h: pareto F ms


α✝: Type

F: Factory α✝

n:

h: pareto F []


nil
α✝: Type

F: Factory α✝

n:

head✝: Meas

tail✝: List Meas

tail_ih✝: pareto F tail✝pareto F (List.map (Meas.adjust_align n) tail✝)

h: pareto F (head✝ :: tail✝)


cons
pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))
α✝: Type

F: Factory α✝

ms: List Meas

n:

h: pareto F ms


α✝: Type

F: Factory α✝

n:

h: pareto F []



Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

n:

h: pareto F ms


α✝: Type

F: Factory α✝

n:

head✝: Meas

tl: List Meas

ih: pareto F tlpareto F (List.map (Meas.adjust_align n) tl)

h: pareto F (head✝ :: tl)


pareto F (List.map (Meas.adjust_align n) (head✝ :: tl))
α✝: Type

F: Factory α✝

n:

head✝: Meas

ih: pareto F []pareto F (List.map (Meas.adjust_align n) [])

h: pareto F [head✝]


nil
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


cons
pareto F (List.map (Meas.adjust_align n) (head✝¹ :: head✝ :: tail✝))
α✝: Type

F: Factory α✝

n:

head✝: Meas

tl: List Meas

ih: pareto F tlpareto F (List.map (Meas.adjust_align n) tl)

h: pareto F (head✝ :: tl)


pareto F (List.map (Meas.adjust_align n) (head✝ :: tl))
α✝: Type

F: Factory α✝

n:

head✝: Meas

ih: pareto F []pareto F (List.map (Meas.adjust_align n) [])

h: pareto F [head✝]



Goals accomplished! 🐙
α✝: Type

F: Factory α✝

n:

head✝: Meas

tl: List Meas

ih: pareto F tlpareto F (List.map (Meas.adjust_align n) tl)

h: pareto F (head✝ :: tl)


pareto F (List.map (Meas.adjust_align n) (head✝ :: tl))
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


pareto F (List.map (Meas.adjust_align n) (head✝¹ :: head✝ :: tail✝))
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


pareto F (List.map (Meas.adjust_align n) (head✝¹ :: head✝ :: tail✝))
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


h_last
(Meas.adjust_align n head✝¹).last > (Meas.adjust_align n head✝).last
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


h_cost
Factory.lt F (Meas.adjust_align n head✝¹).cost (Meas.adjust_align n head✝).cost
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


h
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


h_last
(Meas.adjust_align n head✝¹).last > (Meas.adjust_align n head✝).last
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


h_cost
Factory.lt F (Meas.adjust_align n head✝¹).cost (Meas.adjust_align n head✝).cost
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


h
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


pareto F (List.map (Meas.adjust_align n) (head✝¹ :: head✝ :: tail✝))
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


pareto F (head✝ :: tail✝)
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


h
pareto F (?m :: head✝ :: tail✝)
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


m
Meas
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)



Goals accomplished! 🐙
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


pareto F (List.map (Meas.adjust_align n) (head✝¹ :: head✝ :: tail✝))
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


Factory.lt F (Meas.adjust_align n head✝¹).cost (Meas.adjust_align n head✝).cost
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: head✝¹.last > head✝.last Factory.lt F head✝¹.cost head✝.cost


(Meas.adjust_align n head✝¹).last > (Meas.adjust_align n head✝).last
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_align n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


(Meas.adjust_align n head✝¹).last > (Meas.adjust_align n head✝).last

Goals accomplished! 🐙
lemma
pareto_map_lift_nest: ∀ {α : Type} {F : Factory α} {ms : List Meas} (n : ), pareto F mspareto F (List.map (Meas.adjust_nest n) ms)
pareto_map_lift_nest
(
n:
n
:
: Type
) (
h: pareto F ms
h
:
pareto: {α : Type} → Factory αList MeasProp
pareto
F: ?m.27789
F
ms: ?m.27798
ms
) :
pareto: {α : Type} → Factory αList MeasProp
pareto
F: ?m.27789
F
(
ms: ?m.27798
ms
.
map: {α : Type ?u.27810} → {β : Type ?u.27809} → (αβ) → List αList β
map
(
Meas.adjust_nest: {α : Type} → MeasMeas
Meas.adjust_nest
n:
n
)) :=

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

n:

h: pareto F ms


α✝: Type

F: Factory α✝

n:

h: pareto F []


nil
α✝: Type

F: Factory α✝

n:

head✝: Meas

tail✝: List Meas

tail_ih✝: pareto F tail✝pareto F (List.map (Meas.adjust_nest n) tail✝)

h: pareto F (head✝ :: tail✝)


cons
pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))
α✝: Type

F: Factory α✝

ms: List Meas

n:

h: pareto F ms


α✝: Type

F: Factory α✝

n:

h: pareto F []



Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

n:

h: pareto F ms


α✝: Type

F: Factory α✝

n:

head✝: Meas

tl: List Meas

ih: pareto F tlpareto F (List.map (Meas.adjust_nest n) tl)

h: pareto F (head✝ :: tl)


pareto F (List.map (Meas.adjust_nest n) (head✝ :: tl))
α✝: Type

F: Factory α✝

n:

head✝: Meas

ih: pareto F []pareto F (List.map (Meas.adjust_nest n) [])

h: pareto F [head✝]


nil
pareto F (List.map (Meas.adjust_nest n) [head✝])
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


cons
pareto F (List.map (Meas.adjust_nest n) (head✝¹ :: head✝ :: tail✝))
α✝: Type

F: Factory α✝

n:

head✝: Meas

tl: List Meas

ih: pareto F tlpareto F (List.map (Meas.adjust_nest n) tl)

h: pareto F (head✝ :: tl)


pareto F (List.map (Meas.adjust_nest n) (head✝ :: tl))
α✝: Type

F: Factory α✝

n:

head✝: Meas

ih: pareto F []pareto F (List.map (Meas.adjust_nest n) [])

h: pareto F [head✝]


pareto F (List.map (Meas.adjust_nest n) [head✝])

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

n:

head✝: Meas

tl: List Meas

ih: pareto F tlpareto F (List.map (Meas.adjust_nest n) tl)

h: pareto F (head✝ :: tl)


pareto F (List.map (Meas.adjust_nest n) (head✝ :: tl))
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


pareto F (List.map (Meas.adjust_nest n) (head✝¹ :: head✝ :: tail✝))
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


pareto F (List.map (Meas.adjust_nest n) (head✝¹ :: head✝ :: tail✝))
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


h_last
(Meas.adjust_nest n head✝¹).last > (Meas.adjust_nest n head✝).last
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


h_cost
Factory.lt F (Meas.adjust_nest n head✝¹).cost (Meas.adjust_nest n head✝).cost
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


h
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


h_last
(Meas.adjust_nest n head✝¹).last > (Meas.adjust_nest n head✝).last
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


h_cost
Factory.lt F (Meas.adjust_nest n head✝¹).cost (Meas.adjust_nest n head✝).cost
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


h
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


pareto F (List.map (Meas.adjust_nest n) (head✝¹ :: head✝ :: tail✝))
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


pareto F (head✝ :: tail✝)
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


h
pareto F (?m :: head✝ :: tail✝)
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


m
Meas
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)



Goals accomplished! 🐙
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


pareto F (List.map (Meas.adjust_nest n) (head✝¹ :: head✝ :: tail✝))
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


(Meas.adjust_nest n head✝¹).last > (Meas.adjust_nest n head✝).last
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: head✝¹.last > head✝.last Factory.lt F head✝¹.cost head✝.cost


Factory.lt F (Meas.adjust_nest n head✝¹).cost (Meas.adjust_nest n head✝).cost
α✝: Type

F: Factory α✝

n:

head✝¹, head✝: Meas

tail✝: List Meas

ih: pareto F (head✝ :: tail✝)pareto F (List.map (Meas.adjust_nest n) (head✝ :: tail✝))

h: pareto F (head✝¹ :: head✝ :: tail✝)


Factory.lt F (Meas.adjust_nest n head✝¹).cost (Meas.adjust_nest n head✝).cost

Goals accomplished! 🐙