40 lines
1.3 KiB
Text
40 lines
1.3 KiB
Text
import Lean
|
||
|
||
/--
|
||
info: Vector.extract.hcongr_5.{u_1} (α α' : Type u_1) (e_1 : α = α') (n n' : Nat) (e_2 : n = n') (xs : Vector α n)
|
||
(xs' : Vector α' n') (e_3 : xs ≍ xs') (start start' : Nat) (e_4 : start = start') (stop stop' : Nat)
|
||
(e_5 : stop = stop') : xs.extract start stop ≍ xs'.extract start' stop'
|
||
-/
|
||
#guard_msgs in
|
||
#check Vector.extract.hcongr_5
|
||
|
||
/--
|
||
info: Vector.extract.congr_simp.{u_1} {α : Type u_1} {n : Nat} (xs xs✝ : Vector α n) (e_xs : xs = xs✝) (start stop : Nat) :
|
||
xs.extract start stop = xs✝.extract start stop
|
||
-/
|
||
#guard_msgs in
|
||
#check Vector.extract.congr_simp
|
||
|
||
open Lean Meta
|
||
|
||
/--
|
||
info: @Vector.extract.congr_simp
|
||
-/
|
||
#guard_msgs in
|
||
run_meta do
|
||
let some thm1 ← mkCongrSimpForConst? ``Vector.extract [0] | unreachable!
|
||
IO.println (← ppExpr thm1.proof)
|
||
let some thm2 ← mkCongrSimp? (mkConst ``Vector.extract [0]) | unreachable!
|
||
assert! thm1.type == thm2.type
|
||
assert! thm1.argKinds == thm2.argKinds
|
||
|
||
/--
|
||
info: Vector.extract.hcongr_5
|
||
-/
|
||
#guard_msgs in
|
||
run_meta do
|
||
let some thm1 ← mkHCongrWithArityForConst? ``Vector.extract [0] 5 | unreachable!
|
||
IO.println (← ppExpr thm1.proof)
|
||
let thm2 ← mkHCongrWithArity (mkConst ``Vector.extract [0]) 5
|
||
assert! thm1.type == thm2.type
|
||
assert! thm1.argKinds == thm2.argKinds
|