import Mt.Thread.Traced import Mt.System.Basic import Mt.Utils.List namespace Mt.System.Traced open Utils variable {spec :spec: SpecSpec} localSpec: Type 1instance :instance: {spec : Spec} ā IsReservation spec.ReservationIsReservationIsReservation: Type ā Typespec.spec: SpecReservation :=Reservation: Spec ā Typespec.spec: Specis_reservation defis_reservation: (self : Spec) ā IsReservation self.Reservationsum_reservations (sum_reservations: {spec : Spec} ā List (Traced.TracedThread spec) ā spec.Reservationl :l: List (Traced.TracedThread spec)List (List: Type ?u.28 ā Type ?u.28Traced.TracedThreadTraced.TracedThread: Spec ā Type 1spec)) :spec: Specspec.spec: SpecReservation :=Reservation: Spec ā Typel.l: List (Traced.TracedThread spec)foldl (Ī»foldl: {α : Type ?u.35} ā {β : Type ?u.34} ā (α ā β ā α) ā α ā List β ā αenv_renv_r: ?m.44thread =>thread: ?m.47env_r +env_r: ?m.44thread.thread: ?m.47reservation)reservation: {spec : Spec} ā Traced.TracedThread spec ā spec.Reservationspec.spec: Specis_reservation.is_reservation: (self : Spec) ā IsReservation self.Reservationempty private defempty: {T : Type} ā [self : IsReservation T] ā Tsum_reservations' (sum_reservations': {spec : Spec} ā spec.Reservation ā List (Traced.TracedThread spec) ā spec.Reservationstart) (start: ?m.219l :l: List (Traced.TracedThread spec)List (List: Type ?u.222 ā Type ?u.222Traced.TracedThreadTraced.TracedThread: Spec ā Type 1spec)) :=spec: Specl.l: List (Traced.TracedThread spec)foldl (Ī»foldl: {α : Type ?u.231} ā {β : Type ?u.230} ā (α ā β ā α) ā α ā List β ā αenv_renv_r: ?m.240thread =>thread: ?m.243env_r +env_r: ?m.240thread.thread: ?m.243reservation)reservation: {spec : Spec} ā Traced.TracedThread spec ā spec.Reservationstart protected theoremstart: ?m.219sum_reservations.helper (sum_reservations.helper: ā {spec : Spec} (head : Traced.TracedThread spec) (l : List (Traced.TracedThread spec)), sum_reservations (head :: l) = head.reservation + sum_reservations lhead :head: Traced.TracedThread specTraced.TracedThreadTraced.TracedThread: Spec ā Type 1spec) (spec: Specl) :l: List (Traced.TracedThread spec)sum_reservations (sum_reservations: {spec : Spec} ā List (Traced.TracedThread spec) ā spec.Reservationhead ::head: Traced.TracedThread specl) =l: ?m.415head.head: Traced.TracedThread specreservation +reservation: {spec : Spec} ā Traced.TracedThread spec ā spec.Reservationsum_reservationssum_reservations: {spec : Spec} ā List (Traced.TracedThread spec) ā spec.Reservationl :=l: ?m.415sum_reservations (head :: l) = head.reservation + sum_reservations lspec: Spec
head: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
this: ā (l : List (Traced.TracedThread spec)), sum_reservations l = Mt.System.Traced.sum_reservations' IsReservation.empty lsum_reservations (head :: l) = head.reservation + sum_reservations lsum_reservations (head :: l) = head.reservation + sum_reservations lspec: Spec
head: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
this: ā (l : List (Traced.TracedThread spec)), sum_reservations l = Mt.System.Traced.sum_reservations' IsReservation.empty lsum_reservations (head :: l) = head.reservation + sum_reservations lspec: Spec
head: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
this: ā (l : List (Traced.TracedThread spec)), sum_reservations l = Mt.System.Traced.sum_reservations' IsReservation.empty lsum_reservations (head :: l) = head.reservation + sum_reservations lsum_reservations (head :: l) = head.reservation + sum_reservations lsum_reservations (head :: l) = head.reservation + sum_reservations lwhereGoals accomplished! šadd (add: ā (r : spec.Reservation) (head : Traced.TracedThread spec) (tail : List (Traced.TracedThread spec)), Mt.System.Traced.sum_reservations' r (head :: tail) = Mt.System.Traced.sum_reservations' (r + head.reservation) tailr) (r: spec.Reservationhead :head: Traced.TracedThread specTraced.TracedThreadTraced.TracedThread: Spec ā Type 1spec) (spec: Spectail) :tail: List (Traced.TracedThread spec)sum_reservations'sum_reservations': {spec : Spec} ā spec.Reservation ā List (Traced.TracedThread spec) ā spec.Reservationr (r: ?m.474head::head: Traced.TracedThread spectail) =tail: ?m.479sum_reservations' (sum_reservations': {spec : Spec} ā spec.Reservation ā List (Traced.TracedThread spec) ā spec.Reservationr +r: ?m.474head.head: Traced.TracedThread specreservation)reservation: {spec : Spec} ā Traced.TracedThread spec ā spec.Reservationtail :=tail: ?m.479spec: Spec
headā: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
r: spec.Reservation
head: Traced.TracedThread spec
tail: List (Traced.TracedThread spec)Goals accomplished! šassoc (assoc: ā (r : spec.Reservation) (l : List (Traced.TracedThread spec)), Mt.System.Traced.sum_reservations' r l = r + Mt.System.Traced.sum_reservations' IsReservation.empty lr :r: spec.Reservationspec.spec: SpecReservation) (Reservation: Spec ā Typel) :l: List (Traced.TracedThread spec)sum_reservations'sum_reservations': {spec : Spec} ā spec.Reservation ā List (Traced.TracedThread spec) ā spec.Reservationrr: spec.Reservationl =l: ?m.740r +r: spec.Reservationsum_reservations'sum_reservations': {spec : Spec} ā spec.Reservation ā List (Traced.TracedThread spec) ā spec.ReservationIsReservation.emptyIsReservation.empty: {T : Type} ā [self : IsReservation T] ā Tl :=l: ?m.740spec: Spec
head: Traced.TracedThread spec
lā: List (Traced.TracedThread spec)
r: spec.Reservation
l: List (Traced.TracedThread spec)spec: Spec
head: Traced.TracedThread spec
lā: List (Traced.TracedThread spec)
r: spec.Reservation
l: List (Traced.TracedThread spec)
nilspec: Spec
head: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
headā: Traced.TracedThread spec
tailā: List (Traced.TracedThread spec)
consspec: Spec
head: Traced.TracedThread spec
lā: List (Traced.TracedThread spec)
r: spec.Reservation
l: List (Traced.TracedThread spec)
nil
nilspec: Spec
head: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
headā: Traced.TracedThread spec
tailā: List (Traced.TracedThread spec)
cons
nil
nilspec: Spec
head: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
headā: Traced.TracedThread spec
tailā: List (Traced.TracedThread spec)
cons
nil
nilspec: Spec
head: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
headā: Traced.TracedThread spec
tailā: List (Traced.TracedThread spec)
cons
nil
nil
nil
nilr = rGoals accomplished! šspec: Spec
head: Traced.TracedThread spec
lā: List (Traced.TracedThread spec)
r: spec.Reservation
l: List (Traced.TracedThread spec)spec: Spec
head: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
headā: Traced.TracedThread spec
tailā: List (Traced.TracedThread spec)
consspec: Spec
head: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
headā: Traced.TracedThread spec
tailā: List (Traced.TracedThread spec)
consspec: Spec
headā: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
head: Traced.TracedThread spec
tail: List (Traced.TracedThread spec)
IH: ā (r : spec.Reservation), Mt.System.Traced.sum_reservations' r tail = r + Mt.System.Traced.sum_reservations' IsReservation.empty tail
consspec: Spec
head: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
headā: Traced.TracedThread spec
tailā: List (Traced.TracedThread spec)
consspec: Spec
headā: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
head: Traced.TracedThread spec
tail: List (Traced.TracedThread spec)
IH: ā (r : spec.Reservation), Mt.System.Traced.sum_reservations' r tail = r + Mt.System.Traced.sum_reservations' IsReservation.empty tail
r: spec.Reservation
consspec: Spec
head: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
headā: Traced.TracedThread spec
tailā: List (Traced.TracedThread spec)
consspec: Spec
headā: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
head: Traced.TracedThread spec
tail: List (Traced.TracedThread spec)
IH: ā (r : spec.Reservation), Mt.System.Traced.sum_reservations' r tail = r + Mt.System.Traced.sum_reservations' IsReservation.empty tail
r: spec.Reservation
consspec: Spec
head: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
headā: Traced.TracedThread spec
tailā: List (Traced.TracedThread spec)
consspec: Spec
headā: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
head: Traced.TracedThread spec
tail: List (Traced.TracedThread spec)
IH: ā (r : spec.Reservation), Mt.System.Traced.sum_reservations' r tail = r + Mt.System.Traced.sum_reservations' IsReservation.empty tail
r: spec.Reservation
consspec: Spec
headā: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
head: Traced.TracedThread spec
tail: List (Traced.TracedThread spec)
IH: ā (r : spec.Reservation), Mt.System.Traced.sum_reservations' r tail = r + Mt.System.Traced.sum_reservations' IsReservation.empty tail
r: spec.Reservation
consspec: Spec
headā: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
head: Traced.TracedThread spec
tail: List (Traced.TracedThread spec)
IH: ā (r : spec.Reservation), Mt.System.Traced.sum_reservations' r tail = r + Mt.System.Traced.sum_reservations' IsReservation.empty tail
r: spec.Reservation
consspec: Spec
headā: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
head: Traced.TracedThread spec
tail: List (Traced.TracedThread spec)
IH: ā (r : spec.Reservation), Mt.System.Traced.sum_reservations' r tail = r + Mt.System.Traced.sum_reservations' IsReservation.empty tail
r: spec.Reservation
consspec: Spec
headā: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
head: Traced.TracedThread spec
tail: List (Traced.TracedThread spec)
IH: ā (r : spec.Reservation), Mt.System.Traced.sum_reservations' r tail = r + Mt.System.Traced.sum_reservations' IsReservation.empty tail
r: spec.Reservation
consspec: Spec
headā: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
head: Traced.TracedThread spec
tail: List (Traced.TracedThread spec)
IH: ā (r : spec.Reservation), Mt.System.Traced.sum_reservations' r tail = r + Mt.System.Traced.sum_reservations' IsReservation.empty tail
r: spec.Reservation
consspec: Spec
headā: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
head: Traced.TracedThread spec
tail: List (Traced.TracedThread spec)
IH: ā (r : spec.Reservation), Mt.System.Traced.sum_reservations' r tail = r + Mt.System.Traced.sum_reservations' IsReservation.empty tail
r: spec.Reservation
consspec: Spec
head: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
headā: Traced.TracedThread spec
tailā: List (Traced.TracedThread spec)
consspec: Spec
headā: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
head: Traced.TracedThread spec
tail: List (Traced.TracedThread spec)
IH: ā (r : spec.Reservation), Mt.System.Traced.sum_reservations' r tail = r + Mt.System.Traced.sum_reservations' IsReservation.empty tail
r: spec.Reservation
consspec: Spec
headā: Traced.TracedThread spec
l: List (Traced.TracedThread spec)
head: Traced.TracedThread spec
tail: List (Traced.TracedThread spec)
IH: ā (r : spec.Reservation), Mt.System.Traced.sum_reservations' r tail = r + Mt.System.Traced.sum_reservations' IsReservation.empty tail
r: spec.Reservation
consprotected theoremGoals accomplished! šdecompose_reservation (decompose_reservation: ā (l : List (Traced.TracedThread spec)) (idx : Fin (List.length l)) (t : Traced.TracedThread spec), t = List.get l idx ā sum_reservations l = sum_reservations (List.eraseIdx l idx.val) + t.reservationl :l: List (Traced.TracedThread spec)List (List: Type ?u.1948 ā Type ?u.1948Traced.TracedThreadTraced.TracedThread: Spec ā Type 1spec)) (spec: Specidx :idx: Fin (List.length l)FinFin: Nat ā Typel.length)l: List (Traced.TracedThread spec)t :t: ?m.1958t =t: ?m.1958l.l: List (Traced.TracedThread spec)getget: {α : Type ?u.1963} ā (as : List α) ā Fin (List.length as) ā αidx āidx: Fin (List.length l)sum_reservationssum_reservations: {spec : Spec} ā List (Traced.TracedThread spec) ā spec.Reservationl =l: List (Traced.TracedThread spec)sum_reservations (sum_reservations: {spec : Spec} ā List (Traced.TracedThread spec) ā spec.Reservationl.eraseIdxl: List (Traced.TracedThread spec)idx.val) +idx: Fin (List.length l)t.t: ?m.1958reservation :=reservation: {spec : Spec} ā Traced.TracedThread spec ā spec.Reservationt = List.get l idx ā sum_reservations l = sum_reservations (List.eraseIdx l idx.val) + t.reservationspec: Spec
l: List (Traced.TracedThread spec)
idx: Fin (List.length l)
t: Traced.TracedThread spec
t_def: t = List.get l idxsum_reservations l = sum_reservations (List.eraseIdx l idx.val) + t.reservationt = List.get l idx ā sum_reservations l = sum_reservations (List.eraseIdx l idx.val) + t.reservationspec: Spec
l: List (Traced.TracedThread spec)
idx: Fin (List.length l)
t: Traced.TracedThread spec
t_def: t = List.get l idxsum_reservations l = sum_reservations (List.eraseIdx l idx.val) + t.reservationt = List.get l idx ā sum_reservations l = sum_reservations (List.eraseIdx l idx.val) + t.reservationspec: Spec
l: List (Traced.TracedThread spec)
idx: Fin (List.length l)
t: Traced.TracedThread spec
t_def: t = List.get l idxsum_reservations l = sum_reservations (List.eraseIdx l idx.val) + t.reservationspec: Spec
l: List (Traced.TracedThread spec)
idx: Fin (List.length l)
t: Traced.TracedThread spec
t_def: t = List.get l idxsum_reservations l = sum_reservations (List.eraseIdx l idx.val) + (List.get l idx).reservationspec: Spec
l: List (Traced.TracedThread spec)
idx: Fin (List.length l)
t: Traced.TracedThread spec
t_def: t = List.get l idxsum_reservations l = sum_reservations (List.eraseIdx l idx.val) + (List.get l idx).reservationt = List.get l idx ā sum_reservations l = sum_reservations (List.eraseIdx l idx.val) + t.reservationspec: Spec
l: List (Traced.TracedThread spec)
idx: Fin (List.length l)
t: Traced.TracedThread spec
t_def: t = List.get l idxsum_reservations l = sum_reservations (List.eraseIdx l idx.val) + (List.get l idx).reservationt = List.get l idx ā sum_reservations l = sum_reservations (List.eraseIdx l idx.val) + t.reservationsum_reservations l = sum_reservations (List.eraseIdx l idx.val) + (List.get l idx).reservationt = List.get l idx ā sum_reservations l = sum_reservations (List.eraseIdx l idx.val) + t.reservationā (idx : Fin (List.length l)), sum_reservations l = sum_reservations (List.eraseIdx l idx.val) + (List.get l idx).reservationt = List.get l idx ā sum_reservations l = sum_reservations (List.eraseIdx l idx.val) + t.reservation
nilā (idx : Fin (List.length [])), sum_reservations [] = sum_reservations (List.eraseIdx [] idx.val) + (List.get [] idx).reservation
consā (idx : Fin (List.length (headā :: tailā))), sum_reservations (headā :: tailā) = sum_reservations (List.eraseIdx (headā :: tailā) idx.val) + (List.get (headā :: tailā) idx).reservationt = List.get l idx ā sum_reservations l = sum_reservations (List.eraseIdx l idx.val) + t.reservation
nilā (idx : Fin (List.length [])), sum_reservations [] = sum_reservations (List.eraseIdx [] idx.val) + (List.get [] idx).reservation
nilā (idx : Fin (List.length [])), sum_reservations [] = sum_reservations (List.eraseIdx [] idx.val) + (List.get [] idx).reservation
consā (idx : Fin (List.length (headā :: tailā))), sum_reservations (headā :: tailā) = sum_reservations (List.eraseIdx (headā :: tailā) idx.val) + (List.get (headā :: tailā) idx).reservation
nilsum_reservations [] = sum_reservations (List.eraseIdx [] idx.val) + (List.get [] idx).reservation
nilā (idx : Fin (List.length [])), sum_reservations [] = sum_reservations (List.eraseIdx [] idx.val) + (List.get [] idx).reservation
consā (idx : Fin (List.length (headā :: tailā))), sum_reservations (headā :: tailā) = sum_reservations (List.eraseIdx (headā :: tailā) idx.val) + (List.get (headā :: tailā) idx).reservation
nilsum_reservations [] = sum_reservations (List.eraseIdx [] idx.val) + (List.get [] idx).reservation
nilā (idx : Fin (List.length [])), sum_reservations [] = sum_reservations (List.eraseIdx [] idx.val) + (List.get [] idx).reservation
consā (idx : Fin (List.length (headā :: tailā))), sum_reservations (headā :: tailā) = sum_reservations (List.eraseIdx (headā :: tailā) idx.val) + (List.get (headā :: tailā) idx).reservationGoals accomplished! št = List.get l idx ā sum_reservations l = sum_reservations (List.eraseIdx l idx.val) + t.reservation
consā (idx : Fin (List.length (headā :: tailā))), sum_reservations (headā :: tailā) = sum_reservations (List.eraseIdx (headā :: tailā) idx.val) + (List.get (headā :: tailā) idx).reservation
consā (idx : Fin (List.length (headā :: tailā))), sum_reservations (headā :: tailā) = sum_reservations (List.eraseIdx (headā :: tailā) idx.val) + (List.get (headā :: tailā) idx).reservationspec: Spec
t, headā: Traced.TracedThread spec
tailā: List (Traced.TracedThread spec)
idx: Fin (List.length (headā :: tailā))
conssum_reservations (headā :: tailā) = sum_reservations (List.eraseIdx (headā :: tailā) idx.val) + (List.get (headā :: tailā) idx).reservation
consā (idx : Fin (List.length (headā :: tailā))), sum_reservations (headā :: tailā) = sum_reservations (List.eraseIdx (headā :: tailā) idx.val) + (List.get (headā :: tailā) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
conssum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) idx.val) + (List.get (thread :: threads) idx).reservation
consā (idx : Fin (List.length (headā :: tailā))), sum_reservations (headā :: tailā) = sum_reservations (List.eraseIdx (headā :: tailā) idx.val) + (List.get (headā :: tailā) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
h: idx.val = Nat.zero
cons.zerosum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) Nat.zero) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
nā: Nat
h: idx.val = Nat.succ nā
cons.succsum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) (Nat.succ nā)) + (List.get (thread :: threads) idx).reservation
consā (idx : Fin (List.length (headā :: tailā))), sum_reservations (headā :: tailā) = sum_reservations (List.eraseIdx (headā :: tailā) idx.val) + (List.get (headā :: tailā) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
h: idx.val = Nat.zero
cons.zerosum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) Nat.zero) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
h: idx.val = Nat.zero
cons.zerosum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) Nat.zero) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
nā: Nat
h: idx.val = Nat.succ nā
cons.succsum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) (Nat.succ nā)) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
h: idx.val = Nat.zero
cons.zerosum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) Nat.zero) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
h: idx.val = Nat.zero0 < List.length (thread :: threads)Goals accomplished! šspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
h: idx.val = Nat.zero
this: idx = { val := 0, isLt := (_ : Nat.Linear.ExprCnstr.denote [List.length threads] { eq := false, lhs := Nat.Linear.Expr.add (Nat.Linear.Expr.num 0) (Nat.Linear.Expr.num 1), rhs := Nat.Linear.Expr.add (Nat.Linear.Expr.var 0) (Nat.Linear.Expr.num 1) }) }
cons.zerosum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) Nat.zero) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
h: idx.val = Nat.zero
cons.zerosum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) Nat.zero) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
nā: Nat
h: idx.val = Nat.succ nā
cons.succsum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) (Nat.succ nā)) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
h: idx.val = Nat.zero
this: idx = { val := 0, isLt := (_ : Nat.Linear.ExprCnstr.denote [List.length threads] { eq := false, lhs := Nat.Linear.Expr.add (Nat.Linear.Expr.num 0) (Nat.Linear.Expr.num 1), rhs := Nat.Linear.Expr.add (Nat.Linear.Expr.var 0) (Nat.Linear.Expr.num 1) }) }
cons.zerothread.reservation + sum_reservations threads = sum_reservations threads + thread.reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
h: idx.val = Nat.zero
cons.zerosum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) Nat.zero) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
nā: Nat
h: idx.val = Nat.succ nā
cons.succsum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) (Nat.succ nā)) + (List.get (thread :: threads) idx).reservationGoals accomplished! š
consā (idx : Fin (List.length (headā :: tailā))), sum_reservations (headā :: tailā) = sum_reservations (List.eraseIdx (headā :: tailā) idx.val) + (List.get (headā :: tailā) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
nā: Nat
h: idx.val = Nat.succ nā
cons.succsum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) (Nat.succ nā)) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
nā: Nat
h: idx.val = Nat.succ nā
cons.succsum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) (Nat.succ nā)) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
n: Nat
h: idx.val = Nat.succ n
cons.succsum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) (Nat.succ n)) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
nā: Nat
h: idx.val = Nat.succ nā
cons.succsum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) (Nat.succ nā)) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
n: Nat
h: idx.val = Nat.succ n
idx_ok: n + 1 < List.length (thread :: threads)
cons.succsum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) (Nat.succ n)) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
nā: Nat
h: idx.val = Nat.succ nā
cons.succsum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) (Nat.succ nā)) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
n: Nat
h: idx.val = Nat.succ n
idx_ok: n + 1 < List.length (thread :: threads)
this: idx = { val := n + 1, isLt := idx_ok }
cons.succsum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) (Nat.succ n)) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
nā: Nat
h: idx.val = Nat.succ nā
cons.succsum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) (Nat.succ nā)) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
n: Nat
h: idx.val = Nat.succ n
idx_ok: n + 1 < List.length (thread :: threads)
this: idx = { val := n + 1, isLt := idx_ok }
cons.succthread.reservation + sum_reservations threads = thread.reservation + sum_reservations (List.eraseIdx threads n) + (List.get threads { val := n, isLt := (_ : Nat.succ n ⤠List.length threads) }).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
nā: Nat
h: idx.val = Nat.succ nā
cons.succsum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) (Nat.succ nā)) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
n: Nat
idx_ok: n + 1 < List.length (thread :: threads)
cons.succthread.reservation + sum_reservations threads = thread.reservation + sum_reservations (List.eraseIdx threads n) + (List.get threads { val := n, isLt := (_ : Nat.succ n ⤠List.length threads) }).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
nā: Nat
h: idx.val = Nat.succ nā
cons.succsum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) (Nat.succ nā)) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
n: Nat
idx_ok: n + 1 < List.length (thread :: threads)
cons.succthread.reservation + sum_reservations threads = thread.reservation + sum_reservations (List.eraseIdx threads n) + (List.get threads { val := n, isLt := (_ : Nat.succ n ⤠List.length threads) }).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
n: Nat
idx_ok: n + 1 < List.length (thread :: threads)
cons.succthread.reservation + sum_reservations threads = thread.reservation + (sum_reservations (List.eraseIdx threads n) + (List.get threads { val := n, isLt := (_ : Nat.succ n ⤠List.length threads) }).reservation)spec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
n: Nat
idx_ok: n + 1 < List.length (thread :: threads)
cons.succthread.reservation + sum_reservations threads = thread.reservation + (sum_reservations (List.eraseIdx threads n) + (List.get threads { val := n, isLt := (_ : Nat.succ n ⤠List.length threads) }).reservation)spec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
nā: Nat
h: idx.val = Nat.succ nā
cons.succsum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) (Nat.succ nā)) + (List.get (thread :: threads) idx).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
n: Nat
idx_ok: n + 1 < List.length (thread :: threads)
cons.succsum_reservations threads = sum_reservations (List.eraseIdx threads n) + (List.get threads { val := n, isLt := (_ : Nat.succ n ⤠List.length threads) }).reservationspec: Spec
t, thread: Traced.TracedThread spec
threads: List (Traced.TracedThread spec)
IH: ā (idx : Fin (List.length threads)), sum_reservations threads = sum_reservations (List.eraseIdx threads idx.val) + (List.get threads idx).reservation
idx: Fin (List.length (thread :: threads))
nā: Nat
h: idx.val = Nat.succ nā
cons.succsum_reservations (thread :: threads) = sum_reservations (List.eraseIdx (thread :: threads) (Nat.succ nā)) + (List.get (thread :: threads) idx).reservationend Mt.System.TracedGoals accomplished! š