lean4-htt/tests
Kyle Miller a1c3a36433
feat: parity between structure instance notation and where notation (#6165)
This PR modifies structure instance notation and `where` notation to use
the same notation for fields. Structure instance notation now admits
binders, type ascriptions, and equations, and `where` notation admits
full structure lvals. Examples of these for structure instance notation:
```lean
structure PosFun where
  f : Nat → Nat
  pos : ∀ n, 0 < f n

def p : PosFun :=
  { f n := n + 1
    pos := by simp }

def p' : PosFun :=
  { f | 0 => 1
      | n + 1 => n + 1
    pos := by rintro (_|_) <;> simp }
```
Just like for the structure `where` notation, a field `f x y z : ty :=
val` expands to `f := fun x y z => (val : ty)`. The type ascription is
optional.

The PR also is setting things up for future expansion. Pending some
discussion, in the future structure/`where` notation could have have
embedded `where` clauses; rather than `{ a := { x := 1, y := z } }` one
could write `{ a where x := 1; y := z }`.
2024-11-30 20:27:25 +00:00
..
bench feat: Array.swap takes Nat arguments, with tactic provided proofs (#6194) 2024-11-24 07:59:57 +00:00
compiler feat: Simp.Config.implicitDefEqProofs (#4595) 2024-11-29 22:29:27 +00:00
elabissues
ir
lean feat: parity between structure instance notation and where notation (#6165) 2024-11-30 20:27:25 +00:00
pkg feat: Lean.loadPlugin (#6130) 2024-11-27 09:56:31 +00:00
playground feat: rename Array.shrink to take, and relate to List.take (#5796) 2024-10-21 23:35:32 +00:00
plugin
simpperf
.gitignore
common.sh
lean-toolchain