import JaxLean.Stdlib import examples.tensor_puzzles.generated.PuzzlesSequenceMaskset_option maxRecDepth 4096set_option maxHeartbeats 2000000namespace JaxLean.Puzzles.SequenceMasktheorem matches_loop (values : Tensor ℝ [2, 3]) (length : Tensor Int32 [2]) : Array.sequence_mask values length = Loop.sequence_mask values length := values:Tensor ℝ [2, 3]length:Tensor Int32 [2]⊢ Array.sequence_mask values length = Loop.sequence_mask values length values:Tensor ℝ [2, 3]length:Tensor Int32 [2]i:Fin 2j:Fin 3u:Index []⊢ Array.sequence_mask values length (i, j, u) = Loop.sequence_mask values length (i, j, u) values:Tensor ℝ [2, 3]length:Tensor Int32 [2]i:Fin 2j:Fin 3⊢ Array.sequence_mask values length (i, j, PUnit.unit) = Loop.sequence_mask values length (i, j, PUnit.unit) values:Tensor ℝ [2, 3]length:Tensor Int32 [2]j:Fin 3⊢ Array.sequence_mask values length ((fun i => i) ⟨0, ⋯⟩, j, PUnit.unit) = Loop.sequence_mask values length ((fun i => i) ⟨0, ⋯⟩, j, PUnit.unit)values:Tensor ℝ [2, 3]length:Tensor Int32 [2]j:Fin 3⊢ Array.sequence_mask values length ((fun i => i) ⟨1, ⋯⟩, j, PUnit.unit) = Loop.sequence_mask values length ((fun i => i) ⟨1, ⋯⟩, j, PUnit.unit) values:Tensor ℝ [2, 3]length:Tensor Int32 [2]j:Fin 3⊢ Array.sequence_mask values length ((fun i => i) ⟨0, ⋯⟩, j, PUnit.unit) = Loop.sequence_mask values length ((fun i => i) ⟨0, ⋯⟩, j, PUnit.unit)values:Tensor ℝ [2, 3]length:Tensor Int32 [2]j:Fin 3⊢ Array.sequence_mask values length ((fun i => i) ⟨1, ⋯⟩, j, PUnit.unit) = Loop.sequence_mask values length ((fun i => i) ⟨1, ⋯⟩, j, PUnit.unit) values:Tensor ℝ [2, 3]length:Tensor Int32 [2]⊢ Array.sequence_mask values length ((fun i => i) ⟨1, ⋯⟩, (fun i => i) ⟨0, ⋯⟩, PUnit.unit) = Loop.sequence_mask values length ((fun i => i) ⟨1, ⋯⟩, (fun i => i) ⟨0, ⋯⟩, PUnit.unit)values:Tensor ℝ [2, 3]length:Tensor Int32 [2]⊢ Array.sequence_mask values length ((fun i => i) ⟨1, ⋯⟩, (fun i => i) ⟨1, ⋯⟩, PUnit.unit) = Loop.sequence_mask values length ((fun i => i) ⟨1, ⋯⟩, (fun i => i) ⟨1, ⋯⟩, PUnit.unit)values:Tensor ℝ [2, 3]length:Tensor Int32 [2]⊢ Array.sequence_mask values length ((fun i => i) ⟨1, ⋯⟩, (fun i => i) ⟨2, ⋯⟩, PUnit.unit) = Loop.sequence_mask values length ((fun i => i) ⟨1, ⋯⟩, (fun i => i) ⟨2, ⋯⟩, PUnit.unit) values:Tensor ℝ [2, 3]length:Tensor Int32 [2]⊢ Array.sequence_mask values length ((fun i => i) ⟨0, ⋯⟩, (fun i => i) ⟨0, ⋯⟩, PUnit.unit) = Loop.sequence_mask values length ((fun i => i) ⟨0, ⋯⟩, (fun i => i) ⟨0, ⋯⟩, PUnit.unit)values:Tensor ℝ [2, 3]length:Tensor Int32 [2]⊢ Array.sequence_mask values length ((fun i => i) ⟨0, ⋯⟩, (fun i => i) ⟨1, ⋯⟩, PUnit.unit) = Loop.sequence_mask values length ((fun i => i) ⟨0, ⋯⟩, (fun i => i) ⟨1, ⋯⟩, PUnit.unit)values:Tensor ℝ [2, 3]length:Tensor Int32 [2]⊢ Array.sequence_mask values length ((fun i => i) ⟨0, ⋯⟩, (fun i => i) ⟨2, ⋯⟩, PUnit.unit) = Loop.sequence_mask values length ((fun i => i) ⟨0, ⋯⟩, (fun i => i) ⟨2, ⋯⟩, PUnit.unit)values:Tensor ℝ [2, 3]length:Tensor Int32 [2]⊢ Array.sequence_mask values length ((fun i => i) ⟨1, ⋯⟩, (fun i => i) ⟨0, ⋯⟩, PUnit.unit) = Loop.sequence_mask values length ((fun i => i) ⟨1, ⋯⟩, (fun i => i) ⟨0, ⋯⟩, PUnit.unit)values:Tensor ℝ [2, 3]length:Tensor Int32 [2]⊢ Array.sequence_mask values length ((fun i => i) ⟨1, ⋯⟩, (fun i => i) ⟨1, ⋯⟩, PUnit.unit) = Loop.sequence_mask values length ((fun i => i) ⟨1, ⋯⟩, (fun i => i) ⟨1, ⋯⟩, PUnit.unit)values:Tensor ℝ [2, 3]length:Tensor Int32 [2]⊢ Array.sequence_mask values length ((fun i => i) ⟨1, ⋯⟩, (fun i => i) ⟨2, ⋯⟩, PUnit.unit) = Loop.sequence_mask values length ((fun i => i) ⟨1, ⋯⟩, (fun i => i) ⟨2, ⋯⟩, PUnit.unit) values:Tensor ℝ [2, 3]length:Tensor Int32 [2]⊢ (if decide (↑2 < ↑(length (⟨1, ⋯⟩, ())).toInt) = true then values (⟨1, ⋯⟩, ⟨2, ⋯⟩, ()) else 0) = if ⟨1, ⋯⟩ = 1 ∧ ⟨2, ⋯⟩ = 2 then if True then if decide (↑(length (⟨1 + 1 * ↑0, ⋯⟩, ())).toInt > 2) = true then values (⟨1 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * (2 + 1 * ↑0), ⋯⟩, ()) else 0 else if 2 = 1 then if decide (↑(length (⟨1 + 1 * ↑0, ⋯⟩, ())).toInt > 1) = true then values (⟨1 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * (1 + 1 * ↑0), ⋯⟩, ()) else 0 else if 2 = 0 then if decide (↑(length (⟨1 + 1 * ↑0, ⋯⟩, ())).toInt > 0) = true then values (⟨1 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * (0 + 1 * ↑0), ⋯⟩, ()) else 0 else 0 else if ⟨1, ⋯⟩ = 1 ∧ ⟨2, ⋯⟩ = 1 then if 1 = 2 then if decide (↑(length (⟨1 + 1 * ↑0, ⋯⟩, ())).toInt > 2) = true then values (⟨1 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * (2 + 1 * ↑0), ⋯⟩, ()) else 0 else if True then if decide (↑(length (⟨1 + 1 * ↑0, ⋯⟩, ())).toInt > 1) = true then values (⟨1 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * (1 + 1 * ↑0), ⋯⟩, ()) else 0 else if 1 = 0 then if decide (↑(length (⟨1 + 1 * ↑0, ⋯⟩, ())).toInt > 0) = true then values (⟨1 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * (0 + 1 * ↑0), ⋯⟩, ()) else 0 else 0 else if ⟨1, ⋯⟩ = 1 ∧ ⟨2, ⋯⟩ = 0 then if 0 = 2 then if decide (↑(length (⟨1 + 1 * ↑0, ⋯⟩, ())).toInt > 2) = true then values (⟨1 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * (2 + 1 * ↑0), ⋯⟩, ()) else 0 else if 0 = 1 then if decide (↑(length (⟨1 + 1 * ↑0, ⋯⟩, ())).toInt > 1) = true then values (⟨1 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * (1 + 1 * ↑0), ⋯⟩, ()) else 0 else if True then if decide (↑(length (⟨1 + 1 * ↑0, ⋯⟩, ())).toInt > 0) = true then values (⟨1 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * (0 + 1 * ↑0), ⋯⟩, ()) else 0 else 0 else if ⟨1, ⋯⟩ = 0 ∧ ⟨2, ⋯⟩ = 2 then if True then if decide (↑(length (⟨0 + 1 * ↑0, ⋯⟩, ())).toInt > 2) = true then values (⟨0 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * (2 + 1 * ↑0), ⋯⟩, ()) else 0 else if 2 = 1 then if decide (↑(length (⟨0 + 1 * ↑0, ⋯⟩, ())).toInt > 1) = true then values (⟨0 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * (1 + 1 * ↑0), ⋯⟩, ()) else 0 else if 2 = 0 then if decide (↑(length (⟨0 + 1 * ↑0, ⋯⟩, ())).toInt > 0) = true then values (⟨0 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * (0 + 1 * ↑0), ⋯⟩, ()) else 0 else 0 else if ⟨1, ⋯⟩ = 0 ∧ ⟨2, ⋯⟩ = 1 then if 1 = 2 then if decide (↑(length (⟨0 + 1 * ↑0, ⋯⟩, ())).toInt > 2) = true then values (⟨0 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * (2 + 1 * ↑0), ⋯⟩, ()) else 0 else if True then if decide (↑(length (⟨0 + 1 * ↑0, ⋯⟩, ())).toInt > 1) = true then values (⟨0 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * (1 + 1 * ↑0), ⋯⟩, ()) else 0 else if 1 = 0 then if decide (↑(length (⟨0 + 1 * ↑0, ⋯⟩, ())).toInt > 0) = true then values (⟨0 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * (0 + 1 * ↑0), ⋯⟩, ()) else 0 else 0 else if ⟨1, ⋯⟩ = 0 ∧ ⟨2, ⋯⟩ = 0 then if 0 = 2 then if decide (↑(length (⟨0 + 1 * ↑0, ⋯⟩, ())).toInt > 2) = true then values (⟨0 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * (2 + 1 * ↑0), ⋯⟩, ()) else 0 else if 0 = 1 then if decide (↑(length (⟨0 + 1 * ↑0, ⋯⟩, ())).toInt > 1) = true then values (⟨0 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * (1 + 1 * ↑0), ⋯⟩, ()) else 0 else if True then if decide (↑(length (⟨0 + 1 * ↑0, ⋯⟩, ())).toInt > 0) = true then values (⟨0 + 1 * ↑0, ⋯⟩, ⟨0 + 1 * (0 + 1 * ↑0), ⋯⟩, ()) else 0 else 0 else 0 all_goals All goals completed! 🐙values:Tensor ℝ [2, 3]length:Tensor Int32 [2]⊢ Array.sequence_mask values length = Loop.sequence_mask values length All goals completed! 🐙end JaxLean.Puzzles.SequenceMask