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.
Mt.LowerBound -- invariant : `x ≥ min_x`
-- [begin] this block will be provided by a `derive` handler in the future --
-----------------------------------------------------------------------------
∀ (r' : spec.Reservation),
Unit →
r'.luft=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
r'.luft=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
r'.luft=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
env_luft: Nat env_min_x: LowerBound x, y: Nat initial_valid: Spec.validatespec ({ luft := env_luft, min_x := env_min_x }+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 ({ luft := env_luft, min_x := env_min_x }+r') s'∧r'.luft=1
∀ (r' : spec.Reservation),
Unit →
r'.luft=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
env_luft: Nat env_min_x: LowerBound x, y: Nat initial_valid: Spec.validatespec ({ luft := env_luft, min_x := env_min_x }+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 ({ luft := env_luft, min_x := env_min_x }+{ luft := 1, min_x := 0 }) s'∧{ luft := 1, min_x := 0 }.luft=1
∀ (r' : spec.Reservation),
Unit →
r'.luft=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
env_luft: Nat env_min_x: LowerBound x, y: Nat initial_valid: Spec.validatespec ({ luft := env_luft, min_x := env_min_x }+IsReservation.empty) { x := x, y := y }
mu_valid.f_valid
Spec.validatespec ({ luft := env_luft, min_x := env_min_x }+{ luft := 1, min_x := 0 }) { x := x+1, y := y }
∀ (r' : spec.Reservation),
Unit →
r'.luft=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
env_luft: Nat env_min_x: LowerBound x, y: Nat initial_valid: Spec.validatespec ({ luft := env_luft, min_x := env_min_x }+IsReservation.empty) { x := x, y := y } this: x≥y+env_luft∧x≥Nat.maxenv_min_x0
mu_valid.f_valid
Spec.validatespec ({ luft := env_luft, min_x := env_min_x }+{ luft := 1, min_x := 0 }) { x := x+1, y := y }
∀ (r' : spec.Reservation),
Unit →
r'.luft=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
env_luft: Nat env_min_x: LowerBound x, y: Nat initial_valid: Spec.validatespec ({ luft := env_luft, min_x := env_min_x }+IsReservation.empty) { x := x, y := y } this: x≥y+env_luft∧x≥Nat.maxenv_min_x0
∀ (r' : spec.Reservation),
Unit →
r'.luft=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
env_luft: Nat env_min_x: LowerBound x, y: Nat initial_valid: Spec.validatespec ({ luft := env_luft, min_x := env_min_x }+IsReservation.empty) { x := x, y := y }
∀ (r' : spec.Reservation),
Unit →
r'.luft=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
env_luft: Nat env_min_x: LowerBound x, y: Nat initial_valid: Spec.validatespec ({ luft := env_luft, min_x := env_min_x }+IsReservation.empty) { x := x, y := y }
∀ (r' : spec.Reservation),
Unit →
r'.luft=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
env_luft: Nat env_min_x: LowerBound x, y: Nat initial_valid: Spec.validatespec ({ luft := env_luft, min_x := env_min_x }+IsReservation.empty) { x := x, y := y }
∀ (r' : spec.Reservation),
Unit →
r'.luft=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
env_luft: Nat env_min_x: LowerBound x, y: Nat initial_valid: Spec.validatespec ({ luft := env_luft, min_x := env_min_x }+IsReservation.empty) { x := x, y := y }
∀ (r' : spec.Reservation),
Unit →
r'.luft=1 →
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
env_luft: Nat env_min_x: LowerBound x, y: Nat initial_valid: Spec.validatespec ({ luft := env_luft, min_x := env_min_x }+IsReservation.empty) { x := x, y := y }
valid
(do
atomic_read_modifyfun s => { x := s.x, y := s.y+1 }
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
{ luft := luft, min_x := min_x } (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
True →
valid
(do
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
True →
valid
(do
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
True →
valid
(do
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
True →
valid
(do
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
True →
valid
(do
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
let s' := { x := { x := x, y := y }.x, y := { x := x, y := y }.y+1 };
Spec.validatespec ({ luft := env_luft, min_x := env_min_x }+{ luft := 0, min_x := min_x }) s'∧True
∀ (r' : spec.Reservation),
Unit →
True →
valid
(do
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
True →
valid
(do
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
True →
valid
(do
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
True →
valid
(do
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
True →
valid
(do
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
True →
valid
(do
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
True →
valid
(do
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
True →
valid
(do
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation),
Unit →
True →
valid
(do
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
r' (fun x => true) fun xr => r=IsReservation.empty
valid
(do
let py ←
atomic_readfun x =>
match x with
| { x := x, y := y } => y
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
{ luft := luft, min_x := min_x } (fun x => true) fun xr => r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => y)
{ luft := luft, min_x := min_x } (fun x => true) fun yx =>
match x with
| { luft := luft, min_x := min_x } => min_x=y
∀ (r' : spec.Reservation) (u : LowerBound),
(match r' with
| { luft := luft, min_x := min_x } => min_x=u) →
valid
(do
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥u))
r' (fun x => true) fun xr => r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => y)
{ luft := luft, min_x := min_x } (fun x => true) fun yx =>
match x with
| { luft := luft, min_x := min_x } => min_x=y
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => y)
{ luft := luft, min_x := min_x } (fun x => true) fun yx =>
match x with
| { luft := luft, min_x := min_x } => min_x=y
∀ (r' : spec.Reservation) (u : LowerBound),
(match r' with
| { luft := luft, min_x := min_x } => min_x=u) →
valid
(do
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥u))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (env_r : spec.Reservation) (s : spec.State),
true=true →
Spec.validatespec (env_r+{ luft := luft, min_x := min_x }) s →
∃ r',
let t :=
match s with
| { x := x, y := y } => y;
Spec.validatespec (env_r+r') s∧match r' with
| { luft := luft, min_x := min_x } => min_x=t
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => y)
{ luft := luft, min_x := min_x } (fun x => true) fun yx =>
match x with
| { luft := luft, min_x := min_x } => min_x=y
∀ (r' : spec.Reservation) (u : LowerBound),
(match r' with
| { luft := luft, min_x := min_x } => min_x=u) →
valid
(do
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥u))
r' (fun x => true) fun xr => r=IsReservation.empty
∃ r',
let t :=
match { x := x, y := y } with
| { x := x, y := y } => y;
Spec.validatespec ({ luft := env_luft, min_x := env_min_x }+r') { x := x, y := y }∧match r' with
| { luft := luft, min_x := min_x } => min_x=t
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => y)
{ luft := luft, min_x := min_x } (fun x => true) fun yx =>
match x with
| { luft := luft, min_x := min_x } => min_x=y
∀ (r' : spec.Reservation) (u : LowerBound),
(match r' with
| { luft := luft, min_x := min_x } => min_x=u) →
valid
(do
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥u))
r' (fun x => true) fun xr => r=IsReservation.empty
let t :=
match { x := x, y := y } with
| { x := x, y := y } => y;
Spec.validatespec ({ luft := env_luft, min_x := env_min_x }+{ luft := 0, min_x := y }) { x := x, y := y }∧match { luft := 0, min_x := y } with
| { luft := luft, min_x := min_x } => min_x=t
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => y)
{ luft := luft, min_x := min_x } (fun x => true) fun yx =>
match x with
| { luft := luft, min_x := min_x } => min_x=y
∀ (r' : spec.Reservation) (u : LowerBound),
(match r' with
| { luft := luft, min_x := min_x } => min_x=u) →
valid
(do
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥u))
r' (fun x => true) fun xr => r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => y)
{ luft := luft, min_x := min_x } (fun x => true) fun yx =>
match x with
| { luft := luft, min_x := min_x } => min_x=y
∀ (r' : spec.Reservation) (u : LowerBound),
(match r' with
| { luft := luft, min_x := min_x } => min_x=u) →
valid
(do
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥u))
r' (fun x => true) fun xr => r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => y)
{ luft := luft, min_x := min_x } (fun x => true) fun yx =>
match x with
| { luft := luft, min_x := min_x } => min_x=y
∀ (r' : spec.Reservation) (u : LowerBound),
(match r' with
| { luft := luft, min_x := min_x } => min_x=u) →
valid
(do
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥u))
r' (fun x => true) fun xr => r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => y)
{ luft := luft, min_x := min_x } (fun x => true) fun yx =>
match x with
| { luft := luft, min_x := min_x } => min_x=y
∀ (r' : spec.Reservation) (u : LowerBound),
(match r' with
| { luft := luft, min_x := min_x } => min_x=u) →
valid
(do
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥u))
r' (fun x => true) fun xr => r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => y)
{ luft := luft, min_x := min_x } (fun x => true) fun yx =>
match x with
| { luft := luft, min_x := min_x } => min_x=y
∀ (r' : spec.Reservation) (u : LowerBound),
(match r' with
| { luft := luft, min_x := min_x } => min_x=u) →
valid
(do
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥u))
r' (fun x => true) fun xr => r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => y)
{ luft := luft, min_x := min_x } (fun x => true) fun yx =>
match x with
| { luft := luft, min_x := min_x } => min_x=y
∀ (r' : spec.Reservation) (u : LowerBound),
(match r' with
| { luft := luft, min_x := min_x } => min_x=u) →
valid
(do
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥u))
r' (fun x => true) fun xr => r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => y)
{ luft := luft, min_x := min_x } (fun x => true) fun yx =>
match x with
| { luft := luft, min_x := min_x } => min_x=y
∀ (r' : spec.Reservation) (u : LowerBound),
(match r' with
| { luft := luft, min_x := min_x } => min_x=u) →
valid
(do
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥u))
r' (fun x => true) fun xr => r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => y)
{ luft := luft, min_x := min_x } (fun x => true) fun yx =>
match x with
| { luft := luft, min_x := min_x } => min_x=y
∀ (r' : spec.Reservation) (u : LowerBound),
(match r' with
| { luft := luft, min_x := min_x } => min_x=u) →
valid
(do
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥u))
r' (fun x => true) fun xr => r=IsReservation.empty
∀ (r' : spec.Reservation) (u : LowerBound),
(match r' with
| { luft := luft, min_x := min_x } => min_x=u) →
valid
(do
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥u))
r' (fun x => true) fun xr => r=IsReservation.empty
valid
(do
let px ←
atomic_readfun x =>
match x with
| { x := x, y := y } => xatomic_assertfun x => decide (px≥py))
{ luft := luft, min_x := min_x } (fun x => true) fun xr => r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => x)
{ luft := luft, min_x := min_x } (fun x => true) fun xr => x≥py∧r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => x)
{ luft := luft, min_x := min_x } (fun x => true) fun xr => x≥py∧r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => x)
{ luft := luft, min_x := min_x } (fun x => true) fun xr => x≥py∧r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => x)
{ luft := luft, min_x := min_x } (fun x => true) fun xr => x≥py∧r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => x)
{ luft := luft, min_x := min_x } (fun x => true) fun xr => x≥py∧r=IsReservation.empty
∀ (env_r : spec.Reservation) (s : spec.State),
true=true →
Spec.validatespec (env_r+{ luft := luft, min_x := min_x }) s →
∃ r',
let t :=
match s with
| { x := x, y := y } => x;
Spec.validatespec (env_r+r') s∧t≥py∧r'=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => x)
{ luft := luft, min_x := min_x } (fun x => true) fun xr => x≥py∧r=IsReservation.empty
∃ r',
let t :=
match { x := x, y := y } with
| { x := x, y := y } => x;
Spec.validatespec ({ luft := env_luft, min_x := env_min_x }+r') { x := x, y := y }∧t≥py∧r'=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => x)
{ luft := luft, min_x := min_x } (fun x => true) fun xr => x≥py∧r=IsReservation.empty
let t :=
match { x := x, y := y } with
| { x := x, y := y } => x;
Spec.validatespec ({ luft := env_luft, min_x := env_min_x }+{ luft := 0, min_x := 0 }) { x := x, y := y }∧t≥py∧{ luft := 0, min_x := 0 }=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => x)
{ luft := luft, min_x := min_x } (fun x => true) fun xr => x≥py∧r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => x)
{ luft := luft, min_x := min_x } (fun x => true) fun xr => x≥py∧r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => x)
{ luft := luft, min_x := min_x } (fun x => true) fun xr => x≥py∧r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => x)
{ luft := luft, min_x := min_x } (fun x => true) fun xr => x≥py∧r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => x)
{ luft := luft, min_x := min_x } (fun x => true) fun xr => x≥py∧r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => x)
{ luft := luft, min_x := min_x } (fun x => true) fun xr => x≥py∧r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => x)
{ luft := luft, min_x := min_x } (fun x => true) fun xr => x≥py∧r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => x)
{ luft := luft, min_x := min_x } (fun x => true) fun xr => x≥py∧r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => x)
{ luft := luft, min_x := min_x } (fun x => true) fun xr => x≥py∧r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => x)
{ luft := luft, min_x := min_x } (fun x => true) fun xr => x≥py∧r=IsReservation.empty
valid
(atomic_readfun x =>
match x with
| { x := x, y := y } => x)
{ luft := luft, min_x := min_x } (fun x => true) fun xr => x≥py∧r=IsReservation.empty