lean4-htt/tests/lean/conv1.lean.expected.out
Kyle Miller f1707117f0
feat: conv arg now can access more arguments (#5894)
Specializes the congr lemma generated for the `arg` conv tactic to only
rewrite the chosen argument. This makes it much more likely that the
chosen argument is able to be accessed.

Lets `arg` access the domain and codomain of pi types via `arg 1` and
`arg 2` in more situations. Upstreams `pi_congr` for this from mathlib.

Adds a negative indexing option, where `arg -2` accesses the
second-to-last argument for example, making the behavior of `lhs`
available to `arg`. This works for `enter` as well.

Other improvement: when there is an error in the `enter [...]` tactic,
individual locations get underlined with the error. The tactic info now
also is like `rw`, so you can see the intermediate conv states.

Closes #5871
2024-11-01 02:12:14 +00:00

194 lines
3.2 KiB
Text

x y : Nat
| p (x + y) (y + x + 0)
x y : Nat
| x + y = y + x + 0
x y : Nat
| x + y = y + x + 0
x y : Nat
⊢ x + y = y.add x
case x
x y : Nat
⊢ x + y = y.add x
case a
a b : Nat
| foo (0 + a) (b + 0)
case a.x
a b : Nat
| 0 + a
case a.y
a b : Nat
| b + 0
a b : Nat
| a
case x
a b : Nat
| 0 + a
case y
a b : Nat
| b + 0
case x
a b : Nat
| 0 + a
case x
a b : Nat
| a
case y
a b : Nat
| b + 0
a b : Nat
| a + b
case x
a b : Nat
| a
case y
a b : Nat
| b
x y : Nat
⊢ x + y = y.add x
x y : Nat
⊢ x.add y = y.add x
x y : Nat
⊢ f x (x.add y) y = y + x
x y : Nat
| x + y
case h.h
a b : Nat
| 0 + a + b
case h.h
a b : Nat
| a + b
case h.h
a b : Nat
| 0 + a + b
p : Nat → Prop
h : ∀ (a : Nat), p a
x : Nat
| p (id (0 + x))
p : Nat → Prop
h : ∀ (a : Nat), p a
x : Nat
| id (0 + x)
p : Nat → Prop
h : ∀ (a : Nat), p a
x : Nat
| 0 + x
case h₁
p : Prop
x : Nat
| x = x → p
p : Prop
x : Nat
⊢ (True → p) → p
case h
x : Nat
| 0 + x
p : Prop
x : Nat
⊢ (True → p) → p
x y : Nat
f : Nat → Nat → Nat
g : Nat → Nat
h₁ : ∀ (z : Nat), f z z = z
h₂ : ∀ (x y : Nat), f (g x) (g y) = y
⊢ f (g y) (f (g x) (g (0 + x))) = x
x y : Nat
f : Nat → Nat → Nat
g : Nat → Nat
h₁ : ∀ (z : Nat), f z z = z
h₂ : ∀ (x y : Nat), f (g x) (g y) = y
⊢ f (g y) (f (g x) (g x)) = x
x y : Nat
h : y = 0
| y + x
p : Nat → Prop
x y : Nat
h1 : y = 0
h2 : p x
| y + x
j : Fin 5
p : (n : Nat) → Fin n → Prop
i : Fin 5
hp : p 5 i
hi : j = i
| j
p : {x : Nat} → Nat → Prop
x y : Nat
h1 : y = 0
h2 : p x
| y
p : {x : Nat} → Nat → Prop
x y : Nat
h1 : y = 0
h2 : p x
| y
conv1.lean:221:10-221:13: error: invalid 'lhs' tactic, application has 1 explicit argument(s) but the index is out of bounds
conv1.lean:224:10-224:15: error: invalid 'arg' tactic, application has 1 explicit argument(s) but the index is out of bounds
conv1.lean:227:10-227:13: error: invalid 'rhs' conv tactic, application or implication expected
p
conv1.lean:230:10-230:15: error: 'arg' conv tactic failed, cannot select argument
a✝ : Nat := 0
b✝ : Nat := a✝
| 0 = 0
x y z : Nat
| x + y + z
x y z : Nat
| x + y + z
x y z : Nat
| x + (y + z)
x y z : Nat
| x + y + z
x y z : Nat
| y + z
x y z : Nat
| y + z
x y z : Nat
| x + y + z
x y z : Nat
| x + y
x y z : Nat
| x + (y + z)
x y z : Nat
| x + y
x y z : Nat
| y + z
conv1.lean:248:58-248:83: error: 'pattern' conv tactic failed, pattern was found only 4 times but 5 expected
conv1.lean:249:58-249:85: error: 'pattern' conv tactic failed, pattern was found only 4 times but 5 expected
conv1.lean:250:58-250:85: error: 'pattern' conv tactic failed, pattern was found only 3 times but 5 expected
conv1.lean:251:58-251:87: error: 'pattern' conv tactic failed, pattern was found only 2 times but 5 expected
P Q : Nat → Nat → Nat → Prop
h : P = Q
h2 : Q 1 2 3
| P 1 2 3
P Q : Nat → Nat → Nat → Prop
h : P = Q
h2 : Q 1 2 3
| P 1 2
P Q : Nat → Nat → Nat → Prop
h : P = Q
h2 : Q 1 2 3
| P 1
P Q : Nat → Nat → Nat → Prop
h : P = Q
h2 : Q 1 2 3
| P
conv1.lean:275:10-275:13: error: invalid 'fun' conv tactic, application expected
p
P Q : Nat → Nat → Nat → Prop
h : P = Q
h2 : Q 1 2 3
| P 1 2 3
P Q : Nat → Nat → Nat → Prop
h : P = Q
h2 : Q 1 2 3
| P
conv1.lean:287:10-287:15: error: invalid 'arg 0' conv tactic, application expected
p