universe u def a : Array ((Nat × Nat) × Bool) := #[] def b : Array Nat := #[] structure Foo where (x : Array ((Nat × Nat) × Bool) := #[]) (y : Nat := 0) /-- info: b.modifyOp 1 fun _s => 2 : Array Nat -/ #guard_msgs in #check (b).modifyOp (idx := 1) (fun _s => 2) /-- info: let __src := b; __src.modifyOp 1 fun s => 2 : Array Nat -/ #guard_msgs in #check { b with [1] := 2 } /-- info: let __src := a; __src.modifyOp 1 fun s => (let __src := s.fst; (__src.fst, 1), s.snd) : Array ((Nat × Nat) × Bool) -/ #guard_msgs in #check { a with [1].fst.2 := 1 } def foo : Foo := {} /-- info: foo.x[1]!.fst.snd : Nat -/ #guard_msgs in #check foo.x[1]!.1.2 /-- info: let __src := foo; { x := let __src := __src.x; __src.modifyOp 1 fun s => (s.fst, true), y := __src.y } : Foo -/ #guard_msgs in #check { foo with x[1].2 := true } /-- info: let __src := foo; { x := let __src := __src.x; __src.modifyOp 1 fun s => (let __src := s.fst; (__src.fst, 1), s.snd), y := __src.y } : Foo -/ #guard_msgs in #check { foo with x[1].fst.snd := 1 } /-- info: let __src := foo; { x := let __src := __src.x; __src.modifyOp 1 fun s => (let __src := s.fst; (1, __src.snd), s.snd), y := __src.y } : Foo -/ #guard_msgs in #check { foo with x[1].1.fst := 1 } /-- info: let __src := foo; { x := let __src := __src.x; __src.modifyOp 1 fun s => (let __src := s.fst; (5, __src.snd), s.snd), y := __src.y } : Foo -/ #guard_msgs in #check { foo with x[1].1.1 := 5 } /-- info: let __src := foo; { x := let __src := __src.x; __src.modifyOp 1 fun s => (let __src := s.fst; (__src.fst, 5), s.snd), y := __src.y } : Foo -/ #guard_msgs in #check { foo with x[1].1.2 := 5 }