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.
∀ (r' : spec.Reservation),
Unit →
r'=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
r'=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
r'=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
env_luft, x, y: Nat initial_valid: Spec.validatespec (env_luft+IsReservation.empty) { x := x, y := y }
mu_valid.f_valid
∃ r',
let s' := { x := { x := x, y := y }.x+1, y := { x := x, y := y }.y };
Spec.validatespec (env_luft+r') s'∧r'=1
∀ (r' : spec.Reservation),
Unit →
r'=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
env_luft, x, y: Nat initial_valid: Spec.validatespec (env_luft+IsReservation.empty) { x := x, y := y }
mu_valid.f_valid
let s' := { x := { x := x, y := y }.x+1, y := { x := x, y := y }.y };
Spec.validatespec (env_luft+1) s'∧1=1
∀ (r' : spec.Reservation),
Unit →
r'=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
env_luft, x, y: Nat initial_valid: Spec.validatespec (env_luft+IsReservation.empty) { x := x, y := y }
∀ (r' : spec.Reservation),
Unit →
r'=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
env_luft, x, y: Nat initial_valid: Spec.validatespec (env_luft+IsReservation.empty) { x := x, y := y } this: x≥y+env_luft
∀ (r' : spec.Reservation),
Unit →
r'=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
env_luft, x, y: Nat initial_valid: Spec.validatespec (env_luft+IsReservation.empty) { x := x, y := y } this: x≥y+env_luft
∀ (r' : spec.Reservation),
Unit →
r'=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
env_luft, x, y: Nat initial_valid: Spec.validatespec (env_luft+IsReservation.empty) { x := x, y := y } this: x≥y+env_luft
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
luft (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
r'=0 →
valid
(atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
r'=0 →
valid
(atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
r'=0 →
valid
(atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
luft: Nat luft_def: luft=1 env_luft, x, y: Nat initial_valid: Spec.validatespec (env_luft+luft) { x := x, y := y }
f_valid.mu_valid.f_valid
∃ r',
let s' := { x := { x := x, y := y }.x, y := { x := x, y := y }.y+1 };
Spec.validatespec (env_luft+r') s'∧r'=0
∀ (r' : spec.Reservation),
Unit →
r'=0 →
valid
(atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
luft: Nat luft_def: luft=1 env_luft, x, y: Nat initial_valid: Spec.validatespec (env_luft+luft) { x := x, y := y }
f_valid.mu_valid.f_valid
let s' := { x := { x := x, y := y }.x, y := { x := x, y := y }.y+1 };
Spec.validatespec (env_luft+0) s'∧0=0
∀ (r' : spec.Reservation),
Unit →
r'=0 →
valid
(atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
luft: Nat luft_def: luft=1 env_luft, x, y: Nat initial_valid: Spec.validatespec (env_luft+luft) { x := x, y := y }
∀ (r' : spec.Reservation),
Unit →
r'=0 →
valid
(atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
luft: Nat luft_def: luft=1 env_luft, x, y: Nat initial_valid: Spec.validatespec (env_luft+luft) { x := x, y := y }
∀ (r' : spec.Reservation),
Unit →
r'=0 →
valid
(atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
luft: Nat luft_def: luft=1 env_luft, x, y: Nat initial_valid: Spec.validatespec (env_luft+1) { x := x, y := y } this: x≥y+env_luft+1
∀ (r' : spec.Reservation),
Unit →
r'=0 →
valid
(atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
luft: Nat luft_def: luft=1 env_luft, x, y: Nat initial_valid: Spec.validatespec (env_luft+1) { x := x, y := y } this: x≥y+env_luft+1
∀ (r' : spec.Reservation),
Unit →
r'=0 →
valid
(atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
luft: Nat luft_def: luft=1 env_luft, x, y: Nat initial_valid: Spec.validatespec (env_luft+1) { x := x, y := y } this: x≥y+env_luft+1
∀ (r' : spec.Reservation),
Unit →
r'=0 →
valid
(atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
luft: Nat luft_def: luft=1 env_luft, x, y: Nat initial_valid: Spec.validatespec (env_luft+1) { x := x, y := y } this: x≥y+env_luft+1
∀ (r' : spec.Reservation),
Unit →
r'=0 →
valid
(atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
r'=0 →
valid
(atomic_assertfun x =>
match x with
| { x := x, y := y } => decide (x≥y))
r' (fun x => true) fun xr => r=IsReservation.empty