| universe u | |
| def f1 (n m : Nat) (x : Fin n) (h : n = m) : Fin m := | |
| h ▸ x | |
| def f2 (n m : Nat) (x : Fin n) (h : m = n) : Fin m := | |
| h ▸ x | |
| theorem ex1 {α : Sort u} {a b c : α} (h₁ : a = b) (h₂ : b = c) : a = c := | |
| h₂ ▸ h₁ | |
| theorem ex2 {α : Sort u} {a b : α} (h : a = b) : b = a := | |
| h ▸ rfl | |
| theorem ex3 {α : Sort u} {a b c : α} (r : α → α → Prop) (h₁ : r a b) (h₂ : b = c) : r a c := | |
| h₂ ▸ h₁ | |
| theorem ex3b {α : Sort u} {a b c : α} (r : α → α → Prop) (h₁ : r a b) (h₂ : b = c) : r a c := | |
| h₂.symm ▸ h₁ | |
| theorem ex3c {α : Sort u} {a b c : α} (r : α → α → Prop) (h₁ : r a b) (h₂ : b = c) : r a c := | |
| h₂.symm.symm ▸ h₁ | |
| theorem ex4 {α : Sort u} {a b c : α} (r : α → α → Prop) (h₁ : a = b) (h₂ : r b c) : r a c := | |
| h₁ ▸ h₂ | |
| theorem ex5 {p : Prop} (h : p = True) : p := | |
| h ▸ trivial | |
| theorem ex6 {p : Prop} (h : p = False) : ¬p := | |
| fun hp => h ▸ hp | |
| theorem ex7 {α} {a b c d : α} (h₁ : a = c) (h₂ : b = d) (h₃ : c ≠ d) : a ≠ b := | |
| h₁ ▸ h₂ ▸ h₃ | |
| theorem ex8 (n m k : Nat) (h : Nat.succ n + m = Nat.succ n + k) : Nat.succ (n + m) = Nat.succ (n + k) := | |
| Nat.succ_add .. ▸ Nat.succ_add .. ▸ h | |
| theorem ex9 (a b : Nat) (h₁ : a = a + b) (h₂ : a = b) : a = b + a := | |
| h₂ ▸ h₁ | |
| theorem ex10 (a b : Nat) (h : a = b) : b = a := | |
| h ▸ rfl | |
| def ex11 {α : Type u} {n : Nat} (a : Array α) (i : Nat) (h₁ : a.size = n) (h₂ : i < n) : α := | |
| a[i] | |
| theorem ex12 {α : Type u} {n : Nat} | |
| (a b : Array α) | |
| (hsz₁ : a.size = n) (hsz₂ : b.size = n) | |
| (h : ∀ (i : Nat) (hi : i < n), a.getLit i hsz₁ hi = b.getLit i hsz₂ hi) : a = b := | |
| Array.ext (hsz₁.trans hsz₂.symm) fun i hi₁ hi₂ => h i (hsz₁ ▸ hi₁) | |
| def toArrayLit {α : Type u} (a : Array α) (n : Nat) (hsz : a.size = n) : Array α := | |
| List.toArray $ Array.toListLitAux a n hsz n (hsz ▸ Nat.le_refl _) [] | |
| partial def isEqvAux {α} (a b : Array α) (hsz : a.size = b.size) (p : α → α → Bool) (i : Nat) : Bool := | |
| if h : i < a.size then | |
| let aidx : Fin a.size := ⟨i, h⟩ | |
| let bidx : Fin b.size := ⟨i, hsz ▸ h⟩ | |
| match p a[aidx] b[bidx] with | |
| | true => isEqvAux a b hsz p (i+1) | |
| | false => false | |
| else | |
| true |