blob: 634b7d5b5bc0bb489e55ae0a69165af0e663c692 [file] [edit]
namespace Ex1
theorem elim_with_implicit_target (motive : Nat → Nat → Prop) (case1 : ∀ m n, motive m n) (n : Nat) {m : Nat} : motive m n := case1 _ _
example (n m : Nat) : n ≤ m := by
induction n using elim_with_implicit_target
case case1 => sorry
end Ex1
namespace Ex2
theorem elim_with_implicit_target (motive : Nat → Nat → Prop) (case1 : ∀ m n, motive m n) {n : Nat} (m : Nat) : motive m n := case1 _ _
example (n m : Nat) : n ≤ m := by
induction m using elim_with_implicit_target
case case1 => sorry
end Ex2
namespace Ex3
-- this one should work
theorem elim_with_implicit_target (motive : (n : Nat) → Fin n → Prop) (case1 : ∀ m n, motive m n) {n : Nat} (m : Fin n) : motive n m := case1 _ _
example (n : Nat) (m : Fin n) : n ≤ m := by
induction m using elim_with_implicit_target
case case1 => sorry
end Ex3
namespace Ex4
-- anonymous implicit target
theorem elim_with_implicit_target (motive : Bool → Nat → Prop)
(case1 : ∀ m k, motive m k) {_ : Bool} (m : Nat) : motive ‹Bool› m := case1 _ _
example (n m : Nat) : n ≤ m := by
induction m using elim_with_implicit_target
case case1 => sorry
end Ex4