import JaxLean.Stdlib import examples.tensor_puzzles.generated.PuzzlesDiagset_option maxRecDepth 4096set_option maxHeartbeats 2000000namespace JaxLean.Puzzles.Diagtheorem matches_loop (a : Tensor ℝ [3, 3]) : Array.diag a = Loop.diag a := a:Tensor ℝ [3, 3]⊢ Array.diag a = Loop.diag a a:Tensor ℝ [3, 3]i:Fin 3u:Index []⊢ Array.diag a (i, u) = Loop.diag a (i, u) a:Tensor ℝ [3, 3]i:Fin 3⊢ Array.diag a (i, PUnit.unit) = Loop.diag a (i, PUnit.unit) a:Tensor ℝ [3, 3]⊢ Array.diag a ((fun i => i) ⟨0, ⋯⟩, PUnit.unit) = Loop.diag a ((fun i => i) ⟨0, ⋯⟩, PUnit.unit)a:Tensor ℝ [3, 3]⊢ Array.diag a ((fun i => i) ⟨1, ⋯⟩, PUnit.unit) = Loop.diag a ((fun i => i) ⟨1, ⋯⟩, PUnit.unit)a:Tensor ℝ [3, 3]⊢ Array.diag a ((fun i => i) ⟨2, ⋯⟩, PUnit.unit) = Loop.diag a ((fun i => i) ⟨2, ⋯⟩, PUnit.unit) a:Tensor ℝ [3, 3]⊢ Array.diag a ((fun i => i) ⟨0, ⋯⟩, PUnit.unit) = Loop.diag a ((fun i => i) ⟨0, ⋯⟩, PUnit.unit)a:Tensor ℝ [3, 3]⊢ Array.diag a ((fun i => i) ⟨1, ⋯⟩, PUnit.unit) = Loop.diag a ((fun i => i) ⟨1, ⋯⟩, PUnit.unit)a:Tensor ℝ [3, 3]⊢ Array.diag a ((fun i => i) ⟨2, ⋯⟩, PUnit.unit) = Loop.diag a ((fun i => i) ⟨2, ⋯⟩, PUnit.unit) a:Tensor ℝ [3, 3]⊢ (a (⟨2, ⋯⟩, 0, ()) * if decide (↑2 = ↑↑0) = true then 1 else 0) + ((a (⟨2, ⋯⟩, Fin.succ 0, ()) * if decide (↑2 = ↑↑(Fin.succ 0)) = true then 1 else 0) + ((a (⟨2, ⋯⟩, (Fin.succ 0).succ, ()) * if decide (↑2 = ↑↑(Fin.succ 0).succ) = true then 1 else 0) + ∑ x, a (⟨2, ⋯⟩, x.succ.succ.succ, ()) * if decide (↑2 = ↑↑x.succ.succ.succ) = true then 1 else 0)) = if ⟨2, ⋯⟩ = 2 then a (⟨2 + 1 * ↑0, ⋯⟩, ⟨2 + 1 * ↑0, ⋯⟩, ()) else if ⟨2, ⋯⟩ = 1 then a (⟨1 + 1 * ↑0, ⋯⟩, ⟨1 + 1 * ↑0, ⋯⟩, ()) else if ⟨2, ⋯⟩ = 0 then a (⟨0 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * ↑0, ⋯⟩, ()) else 0 all_goals a:Tensor ℝ [3, 3]⊢ a (⟨2, ⋯⟩, 2, ()) = a (⟨2, ⋯⟩, ⟨2, ⋯⟩, ()) all_goals All goals completed! 🐙a:Tensor ℝ [3, 3]⊢ Array.diag a = Loop.diag a All goals completed! 🐙end JaxLean.Puzzles.Diag