structure foo := (x : nat) (y : nat) (z : bool) #check let s := {foo . x := let v1 := 10 + 10 + 20 + 30 + 40 + 10 + 20 + 30 + 40 + 50 + 10 + 10, v2 := 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 20, v3 := 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 20, v4 := 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 20 in v1 + v2 + v3 + v4, y := 20, z := tt} in s^.x + s^.y set_option pp.structure_instances_qualifier true #check let s := {foo . x := let v1 := 10 + 10 + 20 + 30 + 40 + 10 + 20 + 30 + 40 + 50 + 10 + 10, v2 := 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 20, v3 := 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 20, v4 := 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 20 in v1 + v2 + v3 + v4, y := 20, z := tt} in s^.x + s^.y set_option pp.structure_instances false #check {foo . x := 10, y := 20, z := ff} set_option pp.structure_instances true #check {foo . x := 10, y := 20, z := ff} set_option pp.structure_instances_qualifier false #check {foo . x := 10, y := 20, z := ff} #check {foo . x := 10, y := 20, z := ff}^.x #check (1, 2).1 constant boo : nat → nat → nat × nat #check (boo 1 1)^.fst structure F := (fn : nat → nat → nat) (v : nat) constant h : nat → F #check (h 0)^.fn 10 20