@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
theorem
Sokoban.tr_eq_some_iff
{s s' : State}
(t : Move)
:
sys.tr s t = some s' ↔ have p_dif := Dir.point t;
have p₁ := s.player + p_dif;
have p₂ := p₁ + p_dif;
have s₁ := s.movePlayer p₁;
∃ (d₁ : Tile),
s.Get p₁ d₁ ∧ (!d₁.wall) = true ∧ if (!d₁.box) = true then s₁ = s'
else ∃ (d₂ : Tile), s.Get p₂ d₂ ∧ d₂.box = false ∧ d₂.wall = false ∧ s₁.moveBox p₁ p₂ = s'
@[simp]
@[simp]
@[simp]